文件包含
#include “文件名”
预处理程序提供了条件编译的功能,可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。这对于程序的移植和调试是很有用的。条件编译有三种形式,下面分别介绍。
1、第一种形式
#ifdef 标识符
程序段1
#else
程序段2
#endif
它的功能是,如果表示符已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(它为空),本格式中#else可以没有。
2、第二种形式
#ifndef 标识符
程序段1
#else
程序段2
#endif
它的功能是,如果标识符未被#define命令定义过则程序段1进行编译,否则对程序段2进行编译
3、第三种形式
#if 常量表达式
程序段1
#else
程序段2
#endif
它的功能是,如常量表达式的值为真(非0),则对程序段1进行编译,否则对程序段2进行编译。因此可以使程序在不同条件下,完成不同的功能。
#define R 1
int main ()
{
float c,r,s;
printf ("input a number:");
scanf("%f",&c);
#if R
r = 3.14159*c*c;
printf("area of round is: %f\n",r);
#else
s=c*c;
printf("area of square is : %f\n",s);
#endif
}
本例中采用了第三种形式的条件编译。在程序第一行宏定义中,定义R为1,因此在条件编译时,常量表达式为真,故计算并输出圆面积。
上面介绍的条件编译当然也可以用条件语句来实现,但是用条件语句将会对整个源程序进行编译,生成的目标代码程序很长,而采用条件编译,则根据条件只编译其中的程序段1或程序段2,生成目标程序较短。如果条件选择的程序很长,采用条件编译的方法是十分必要的。