文件包含(是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");
}