一、什么是预编译
预编译的作用是在编译之前对内容进行最后的处理和取舍,决定哪些部分不参加编译。以及一些代码的文本替换工作,比如复制 #include
中的文件代码。#define
中宏定义的替换和条件编译等。
1. 宏定义
当计算一个数值需要引入一个相同的变量,但是在进行变量是修改的代价较大,因此定义一个宏可以代替需要输入的数据。
1.1 不带参数的宏定义
宏定义又称宏替换,可以理解为用一个标识符代替程序中的一个字符串。
#define 标识符 字符串
#define Pi 3.1416926
预处理器会将程序中所有出现Pi都替换为该数字。需要注意的是:
- 宏名通常大写
- 宏名通常用于定义数组大小。
- 宏定义可以嵌套
- 宏定义最后不需要加分号
- 宏的有效范围为宏定义到本文件结束。如果想人为的终止宏定义可以通过
#undef
实现。
1.2 带参数的宏定义
带参宏定义除了进行字符串的替换外还要进行参数的替换。当有多个参数的时候,参数之间用逗号分割
#define S(R) PI*R*R
需要注意的是,宏展开的时候只是将