C语言基本语法——预处理器和预处理指令
1、什么是预处理器
2、什么是预处理器指令
3、预处理器指令
4、宏指令
5、宏函数
6、宏函数的优缺点
7、条件编译指令
1、什么是预处理器
• 预处理器是一个程序,用来处理源程序中的预处理指令。
• 一个程序在编译之前一般都要经过预处理。
2、什么是预处理器指令
• 以“#”开头的指令叫预处理指令
• 可以出现在任何位置,必须一行结束
• 如果要换行,须得用"\"来连接两行内容
3、预处理器指令
• 文件包含
#include <>#include “”
• 宏定义
无参宏定义
有参宏定义
• 条件编译
#if
#ifdef
#ifndef
#endif
#elif
#else
#undef
#if defined
4、宏指令
宏相当于文本的替换操作
• 语法格式:
-定义在函数的外面
-格式:#define PI 3.14
PI为宏的文本内容 在编译前将PI的内容替换成3.14
5、宏函数
• 语法格式: #define MianJi(r) PI*r*r
宏函数只是文本,只是相当于做了内容替换的操作,注意参数是没有数据类型
6、宏函数的优缺点
• 宏函数的优缺点
可以代码更简单、更容易,避免大量使用。
• 宏函数注意事项
– 宏函数中的参数一定要用括号括起来,以防止替换后的优先级问题。
– 宏函数的整个表达式也需要用括号括起来,以防止宏函数参于表 达式的运算
– 宏函数中的多条语句时,应写成复合语句,以防止重复定义变量。
– 调用宏函数时,不要将++,--的表达式做为参数传递,可以先++,--后调用,或者,调用后++,--,以防止在宏函数中重复地 计算++,--
– 宏函数也可以调用另一个宏函数
7、条件编译指令
• 在代码中设置编译条件 根据编译条件进行代码的编译并运 行。(跨平台)
• 在编译文件的时候传入一个参数,根据参数就可以对代码进 行有选择的编译。
gcc -DZHAOBENSHAN main3.c
• 条件指令
#if 如果 #ifdef 如果定义
#ifndef 如果没定义 #elif 如果 //else if#else 否则 与 #if 对应关系
#endif 结束标识
#undef 取消宏和#define 定义宏
• 编译方式
根据参数编译
gcc -DXXX main.c
根据宏值(参数)
#define ZHAOBENSHAN 1
根据宏"值(逻辑)"进行编译
#if ZHAOBENSHAN==1
C语言基本语法——预处理器和预处理指令的更多相关文章
- C语言--- 字符串数组 、 预处理器和预处理指令 、 多文件编程 、 结构体
1 输入一个姓名,判断是否是五虎上将. 1.1 问题 本案例需要使用交互的方式判断:用户从控制台输入一个名字,由程序判断该名字是否在五虎上将的名单中.五虎上将的名单是:GuanYu.ZhangFei. ...
- C Primer Plus之C预处理器和C库
编译程序前,先由预处理器检查程序(因此称为预处理器).根据程序中使用的预处理器指令,预处理器用符号缩略语所代表的内容替换程序中的缩略语. 预处理器不能理解C,它一般是接受一些文件并将其转换成其他文本. ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 预处理器
预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理. 所有的预处理器指令都是以井号(#)开头,只有空格字符可以出现在预处理指令之前.预处理指令不是 C++ 语句,所以它们不会以分号(;)结尾 ...
- Microsoft Visual C++ 6.0预处理器参考手册
返回总目录 Microsoft Visual C++ 6.0 预处理器参考手册 目录引言........................................................ ...
- 前端知识体系之CSS及其预处理器SASS/LESS
如果你是个前端设计师,很多时候我们都在写CSS,CSS是定义页面样式的脚本,并不是一种编程语言,只是一行行单纯的描述页面元素的样子,如果对英语熟练的话,它像说话一样简单,这里举个简单的例子: body ...
- Docs-.NET-C#-指南-语言参考-预处理器指令:#if 预处理指令
ylbtech-Docs-.NET-C#-指南-语言参考-预处理器指令:#if 预处理指令 1.返回顶部 1. #if(C# 参考) 2018/06/30 如果 C# 编译器遇到 #if 指令,最终是 ...
- 《你必须知道的495个C语言问题》读书笔记之第8-10章:字符串、布尔类型和预处理器
一.字符和字符串 1. Q:为什么strcat(string, '!')不行? A:strcat()用于拼接字符串,所以应该写成strcat(string, "!")." ...
- Koala – 开源的前端预处理器语言图形编译工具
koala 是一个前端预处理器语言图形编译工具,支持 Less.Sass.Compass.CoffeeScript,帮助 Web 开发者更高效地使用它们进行开发.跨平台运行,完美兼容 Windows. ...
- Sass:一种CSS预处理器语言
http://sass-lang.com/ Sass是一种CSS预处理器语言,通过编程方式生成CSS代码.因为可编程,所以操控灵活性自由度高,方便实现一些直接编写CSS代码较困难的代码. 同时,因为S ...
随机推荐
- int rc = -EINVAL是什么意思
rc应该是return code的意思,将函数返回值rc初始化为-EINVAL,EINVAL由POSIX.1规范中的一个宏,一般通过包含C标准头文件errno.h,表示参数无效(invalid arg ...
- C++基础 (6) 第六天 继承 虚函数 虚继承 多态 虚函数
继承是一种耦合度很强的关系 和父类代码很多都重复的 2 继承的概念 3 继承的概念和推演 语法: class 派生类:访问修饰符 基类 代码: … … 4 继承方式与访问控制权限 相对的说法: 爹派生 ...
- 网络教程(8)IP协议
两台计算机间不是直接连接的,所以不能使用PPP协议,那么它们是怎么链接的呢? host A想把信息传给host B ethernet帧中的目标mac地址传到SFO后开始使用PPP协议 [Media ...
- 最长上升子序列(LIS)与最长公共子序列(LCS)
1.LIS : 给定一个序列,求它的最长上升子序列(n<=2000) 第一种 O(n^2): dp[i] 为以i为开头的最长上升子序列长度 code1: #include<cstdio&g ...
- Mac python3 环境下 完善pdf转jpg脚本
由于样本图片数据都是保存在pdf里,想拿到样本必须先把图片从pdf中提取出来,算是数据清洗中的一点小小的积累吧. 这里不得不吐槽一下公司存储图片的机制,业务员把jpg格式的照片放到word里,然后用工 ...
- 搞定PHP面试 - 深入了解引用
1. 什么是引用 在 PHP 中引用是指用不同的名字访问同一个变量内容.PHP 中的变量名和变量内容是不一样的, 因此同样的内容可以有不同的名字.最接近的比喻是 Unix 的文件名和文件本身--变量名 ...
- win7下UDL文件不同
win7 执行UDL文件看不全all驱动.所以没有办法配置数据库的连接.查度娘,方法如下: 在C:\建一个test.udl 文件,运行命令 C:\Windows\syswow64\rundll32.e ...
- (1)spring boot起步之Hello World【从零开始学Spring Boot】
Spring Boot交流平台 1.1 介绍 自从structs2出现上次的漏洞以后,对spring的关注度开始越来越浓. 以前spring开发需要配置一大堆的xml,后台spring加入了annot ...
- shell脚本监测文件变化
1. 我使用过的Linux命令之du - 查看文件的磁盘空间占用情况 用途说明 du命令是用来查看磁盘空间占用情况的,在Linux系统维护时常会用到,并且通常与df命令搭配使用.首先使用df看一下各个 ...
- [Asp.net]EF更新之后要 保存
数据库那边保存表 项目里保存模型