众所周知,你的程序编译前要做的事就是扫描源代码,对其做初步的转换,产生新的源代码提供给编译器,这个过程就叫
编译预处理
。这个处理过程由预处理器来完成,
预处理器
是在程序真正运行前由编译器调用的预处理程序。
常见的预处理有以下三种:
文件包含
:#include 是一种最为常见的预处理,主要是做为文件的引用组合源程序正文。
宏替换
: #define,这是最常见的用法,它可以定义符号常量、函数功能、重新命名、字符串的拼接等各种功能。
条件编译
:#if,#ifndef,#ifdef,#elif,#endif,#undef等也是比较常见的预处理,主要是进行编译时进行有选择的挑选,注释掉一些指定的代码,以达到版本控制、防止对文件重复包含的功能。
一,
文件包含
#include预处理指令的作用是在指令处展开被包含的文件。包含可以是多重的,也就是说一个被包含的文件中还可以包含其他文件。预处理器至多支持15层嵌套包含。
预处理过程不检查在转换单元中是否已经包含了某个文件并阻止对它的多次包含。这样就很容易发生相同的一个文件被包含多次的情况,可以轻易地利用条件式编译的预处理指令避免多次包含相同的文件,例如:
/*…incfile.h实际的内容写在这里…*/
#endif
文件包含中的<>和” “”的区别就不用说了。
二,
宏