预处理是C语言的一个重要功能,由预处理程序完成。

预处理主要是处理以#开头的命令

编译器会将预处理的结果保存到和源文件同名的.i文件中,例如 main.c 的预处理结果在 main.i 中。和.c一样,.i也是文本文件,可以用编辑器打开直接查看内容。

条件编译

#ifdef  宏名
    程序段1
#else
    程序段2
#endif
#ifndef 宏名
    程序段1 
#else 
    程序段2 
#endif

最后需要注意的是,#if 后面跟的是“整型常量表达式”,而 #ifdef 和 #ifndef 后面跟的只能是一个宏名,不能是其他的。

#include

#include叫做文件包含命令,用来引入对应的头文件(.h文件)。

#include的处理过程很简单,就是将头文件的内容插入到该命令所在的位置,从而把头文件和当前源文件连接成一个源文件,这与复制粘贴的效果相同。

使用尖括号< >和双引号" "的区别在于头文件的搜索路径不同:

带参数的宏

C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。 对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。

带参宏定义的一般形式为: #define 宏名(形参列表) 字符串

例如: #define M(y) y**y+3**y //宏定义

k=M(5); //宏调用

Untitled