1. 预处理就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。
预处理命令可以划分为宏,文件包含,条件编译3个大类。
2.在C语言源程序中,允许用一个标识符来表示一个字符串,成为“宏”。被定义为宏的标识符称为宏名。
在编译预处理时,对程序中所有出现的宏名,都用宏定义中的字符串去代换,这称为宏替换或宏展开。
3. 在C语言中,#include被称为文件包含命令,其意义是把尖括号< >或引号" "内指定的文件包含到本程序来,称为本程序的一部分。
被包含的文件通常是由系统提供的,扩展名为.h, 因此也称为头文件。
4. 文件包含中< >和" "区别:
1)使用< >表示在包含文件目录中查找文件,包含文件目录有在环境变量中设置,而不是在源文件目录去查找。
2)使用" " 表示先在当前的源文件目录中查找,若未找到,才到包含目录中去查找。
5. 一般将符号常量,全部变量,函数声明放在头文件(.h)中,函数的定义放在源文件(.c)中。
6. 条件编译:
#ifdef 标识符
program1
#else
program2
#endif
如果标识符已被定义过,对program1进行编译,否则对program2进行编译。
如果没有program2,#else可以没有:
#ifdef 标识符
program1
#endif
#define PI
#ifdef PI
int number = 10;
#else
int number = 5;
#endif
int main()
{
printf("%d\n",number);
system("pause");
return 0;
}
可以看出#else下面是灰色的表示条件不满足。
与上面的功能相反的条件编译:
#ifndef 标识符
//program1;
#else
//program2
#endif
下面举例:
#define PI
#ifndef PI
double area = 0;
#else
double area = 3.14*5*5;
#endif
int main()
{
printf("%f\n",area);
system("pause");
return 0;
}
还有一种形式是#if 表达式
#if 表达式
program1
#else
program2
#endif
表达式一般是布尔表达式,如果为真,编译program1,否则,编译program2.