预编译——老二文件包含和老三条件编译

文件包含

#include “文件名”


预处理程序提供了条件编译的功能,可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。这对于程序的移植和调试是很有用的。条件编译有三种形式,下面分别介绍。

1、第一种形式

#ifdef 标识符
      程序段1
#else
      程序段2
#endif

它的功能是,如果表示符已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(它为空),本格式中#else可以没有。

2、第二种形式

#ifndef 标识符
      程序段1
#else
      程序段2
#endif

它的功能是,如果标识符未被#define命令定义过则程序段1进行编译,否则对程序段2进行编译

3、第三种形式

扫描二维码关注公众号,回复: 2368363 查看本文章

#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,生成目标程序较短。如果条件选择的程序很长,采用条件编译的方法是十分必要的。





猜你喜欢

转载自blog.csdn.net/qq_27397357/article/details/53021557
今日推荐