C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。我们将把 C 预处理器(C Preprocessor)简写为 CPP。
重要的预处理器指令:
ANSI C 定义了许多宏。我们可以使用这些宏,但是不能直接修改这些预定义的宏
#include <stdio.h>
#define tokenpaster(n) \\\\
printf ("token" #n " = %d", token##n)
int main(void)
{
int token34 = 40;
tokenpaster(34);
return 0;
}
输出结果:
token34 = 40
原因:从编译器产生的实际输出
printf ("token34 = %d", token34);
常量表达式:在编译期间进行求值的表达式
CPP允许使用带参数的宏来模拟函数
e.g.
#define MAX(x,y) ((x) > (y) ? (x) : (y))