预处理是C语言的一个重要功能,由预处理程序完成。
预处理主要是处理以#开头的命令
编译器会将预处理的结果保存到和源文件同名的.i文件中,例如 main.c 的预处理结果在 main.i 中。和.c一样,.i也是文本文件,可以用编辑器打开直接查看内容。
#ifdef 宏名
程序段1
#else
程序段2
#endif
#ifndef 宏名
程序段1
#else
程序段2
#endif
最后需要注意的是,#if 后面跟的是“整型常量表达式”,而 #ifdef 和 #ifndef 后面跟的只能是一个宏名,不能是其他的。
#include叫做文件包含命令,用来引入对应的头文件(.h文件)。
#include的处理过程很简单,就是将头文件的内容插入到该命令所在的位置,从而把头文件和当前源文件连接成一个源文件,这与复制粘贴的效果相同。
使用尖括号< >和双引号" "的区别在于头文件的搜索路径不同:
C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。 对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。
带参宏定义的一般形式为:
#define 宏名(形参列表) 字符串
例如:
#define M(y) y**y+3**y //宏定义
k=M(5); //宏调用
