防止重复编译以test.h为例:#ifndef TEST_H#define TEST_H.#endif一般是用来防止重复包含头文件第一次包含头文件时 XXX没有被定义 第二次再用时 XXX 已经被定义拉就不在包含这个头文件。条件指示符#ifndef检查预编译常量在前面是否已经被定义.如果在前面没有被定义,则条件指示符的值为真,于是从#inndef到#endif之间的所有语句都被包含进来进行处理.相反,如果#inndef指示符的值为假,则它与#endif指示符之间的行将被忽略.条件指示符#ifndef 的最主要目的是防止头文件的重复包含和编译。
深入:条件编译
预处理程序提供了条件编译的功能。 可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。这对于程序的移植和调试是很有用的。 条件编译有三种形式,下面分别介绍:
1. 第一种形式:
#ifdef 标识符
程序段1
#else
程序段2
#endif
它的功能是,如果标识符已被 #define命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(它为空),本格式中的#else可以没有,即可以写为:
#ifdef 标识符
程序段
#endif
举例如下:
#define NUM ok
void main()
{
struct stu
{
int num;
char *name;
char sex;
float score;
} *ps;
ps=(struct stu*)malloc(sizeof(struct stu));
ps->num=102;
ps->name="Zhang ping";
ps->sex='M';
ps->score=62.5;
#ifdef NUM
printf("Number=%d\nScore=%f\n",ps->num,ps->score);
#else
printf("Name=%s\nSex=%c\n",ps->name,ps->sex);