什么是预处理(预编译)
就是在编译前自动对源程序中预处理的部分做处理,处理完毕再进行对源程序的编译。
就是首先编译#字开头的指令。
什么时候需要预处理
- 在使用总是经常使用但不经常改动的大型代码
- 程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项,将所有包含文件预编译为一个“预编译头”
预处理的三种指令
- 宏定义:#define 指令定义一个宏,#undef 指令删除一个宏定义。
- 文件包含:#include指令导致一个指定文件的内容被包含到程序中。
- 条件编译:#if,#ifdef,#ifndef,,#elif,#else 和#dendif 指令可以根据编译器可以测试的条件来将一段文本包含到程序中或排除在程序之外。
剩下的#error,#line和#pragma指令更特殊的指令,较少用到。
宏定义
用一个标识符来表示一个字符串,这叫做 “宏”。
被定义为“宏”的标识符称为 “宏名”。
在编译预处理时,对程序中所有出现的宏名,都用宏定义中的字符串去代换,这称为 “宏代换”或“宏展开”。
无参数的宏
#define 标识符 字符串
字符串可以是常数、表达式、格式串等。
例如:#define M (y*y+3*y)