目录
[toc]
预处理指令
什么是预处理指令:
- 在我们的文件翻译成0和1之前做的操作我们称之为预处理指令
- 一般情况下预处理指令都是以#号开头的
宏定义
不带参数的宏定义
#define 宏名 值
宏定义的作用:会在程序翻译成0和1之前,讲所有宏名替换为“宏的值”
宏定义在什么时候替换:源代码->预处理->汇编->二进制->可执行程序
-
宏定义的作用域:
- 从定义的那一行开始,一直到文件末尾
- 虽然默认情况下,宏定义的作用域是从定义的那一行开始直到文件末尾。但是我们也可以通过对应的关键字提前结束宏定义的作用域。==#undef 宏名==
注意:宏定义后面不要写“分号”
带参数的宏定义
#define 宏名((参数1), (参数2)) (参数1 + 参数2)
- 带参数的宏定义注意点:
- 一般情况下建议写带参数的宏的时候,给每个参数加上一个();
- 一般情况下建议写带参数的宏的时候,给结果也加一个();
条件编译
int score = 100;
#if score == 90
//执行代码
#else
//执行代码
#endif//作为结束符号
- 注意:
- 条件编译不能用来判断变量,因为不在同一个生命周期
- 君生我未生,我生君已老
- 一般情况下,条件编译是和宏定义结合在一起使用的
#define SCORE 100
#if SCORE == 90
//执行代码
#elif
//执行代码
#else
//执行代码
#endif//作为结束符号
-
条件编译和选择结构if
- 共同点
- 都可以对给定的条件进行判断,添加满足或者不满足都可以执行特定代码
- 区别
- 声明周期不同
- if是在运行时
-
if是在编译之前
-
if需要一个明确的结束符号:==#endif==
- 编译范围不同
- if会将所有代码都编译到二进制中
-
if只会将满足条件的部分编译到二进制中
- 声明周期不同
- 共同点
-
条件编译的优点:
- 缩小应用程序的大小
- 方便调试
网友评论