函数与编译预处理8

文件包含(是C语言的一个重要功能)

一般形式为:

#include <文件名>        或#include "文件名"

在前面我们已经多次用此命令包含过库函数的头文件。

例如:
#include <stdio.h>

#include "math.h"

文件包含命令的功能是把指定包含的文件插入该命令行取代该命令,从而把指定包含的文件和当前的源程序文件连成一个源文件。

#include "文件名"和#include <文件名>【都可以使用】

但是有区别:

*1:使用尖括号表示在包含文件目录中去查找(包含目录是用户在设置环境下设置的),而不在源文件中去查找

*2:使用双引号则表示首先在当前的源文件目录查找,若未找到才到包含目录中查找。

一个include命令只能指定一个被包含文件,若有多个文件要包含,则须用多个include命令。

③文件包含允许嵌套,即在一个被包含的文件中又可以包含另一个文件。

条件编译(预处理程序提供了条件编译的功能)

有三种形式:

1、形式一

#ifdef 标识符

   程序段1

#else

   程序段2

#endif

它的功能是:如果标识符已被#define命令定义,则对程序段1进行编译,否则对程序段2进行编译。本格式中的#else可以没有,即可以写作:

#ifdef 标识符

   程序段

#endif

例如:

#define NUM ok

#ifdef NUM

   #define L(x) ((x)*(x)+2)

#else

   #define L(x) ((x)*(x)+2*(x)+5)

#endif

在上述中条件编译预处理命令的程序段是宏定义。因此,参加编译的宏定义是:

 #define L(x) ((x)*(x)+2)

上例中的程序段是预处理命令行。当然,程序段也可以是语句组。

例如:

main()

{

        ……

        #ifedf NUM                                //条件编译在函数内

        ……                                           //语句组

        #else 

        ……

        #endif

}

2、形式二

#ifndef 标识符

   程序段1

#else

   程序段2

#endif

与第一种刚好相反:如果标识符未被#define 命令定义过,则对程序段1进行编译,否则对程序段2进行编译。

3、形式三

#if 常量表达式

   程序段1

#else

   程序段2

endif

功能是:如果常量表达式的值为“真”(非0),则对程序1进行编译,否则对程序段2进行编译。

例如:
#include <stdio.h>

#include <windows.h>

#define F 1

int main()

{

        float x,s;

        printf("input x:");

        scanf("%f",&x);

        #if F                                                                //常量F的值为真,编译if后面的程序

                s=3.14159*x*x;

                printf("area of round is :%f\n",s);

        #else                                                              //如果常量F的值为假,则编译else后面的程序

                s=x*x;

                printf("area of square is :%f\n",s");

#endif

system("pause");

}

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值