什么是预编译
预编译就是指程序执行前的一些预处理工作
,主要指#表示的。
何时需要预编译
1.总是使用不经常改动的大型代码体。
2.程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。
两种格式区别
文件包含有两种格式,分别是:
#include "file"
和
#include <file>
这两格式的区别在于:
1.
使用双引号,系统首先到当前目录下查找被包含的文件,如果没找到,再到系统指定的
"
包含文件目录
"
(由用户在配置环境时设置)去找。
2.
使用尖括号:直接到系统指定的
"
包含文件目录
"
去查找。
通常使用双引号比较保险
文件包含文件包含优点
一个大程序,通常分为多个模块,并由多个
程序员
分别编程。有了文件包含处理功能,就可以将多个模块共用的数据(如符号常量和数据结构)或函数,集中到一个单独的文件中。这样,凡是要使用其中数据或调用其中函数的程序员,只要使用文件包含处理功能,将所需文件包含进来即可,不必再重复定义它们,从而减少重复劳动和定义不一致造成的错误。
文件包含例子
文件
F1.c
1
2
3
4
5
|
#define PI 3.1415926
#define R 3
#define S PI*R*R
|
文件
F2.c
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include "F1.c"
#include "stdio.h"
main()
{
float
area=0;
printf("area=%f\n",S);
}
|
在
VC++6.0
的运行结果为:
1
|
area=28.274333
|
文件包含文件包含特点
文件包含的特点:
①
编译预处理时,预处理程序将查找指定的被包含文件,并将其复制插入到
#include
命令出现的位置上
②
常用在文件头部的被包含文件,称为
“
标题文件
”
或
“
头部文件
”
,常以
“h”(head)
作为后缀,简称头文件。在头文件中,除可包含宏定义外,还可包含外部变量定义、结构类型定义等。
③
一条包含命令,只能指定一个被包含文件。如果要包含多个文件,则要用多条包含命令。例如,文件
f1.h
中要使用到文件
f2.h
和文件
f3.h
的内容,则可在文件
f1.h
中用两个文件包含命令分别包含文件
f2.h
和文件
f3.h
,即在文件
f1.h
中定义:
#include "f2.h"
#include "f3.h"
在使用多个
#include
命令时,顺序是一个值得注意的问题。上例中,如果文件
f1.h
包含文件
f2.h
,而文件
2
要用到文件
f3.h
,则在
f1.h
中
#include
定义的顺序应该是:
#include "f3.h"
#include "f2.h"
这样文件
f1.c
和文件
f2.h
都可以使用文件
f3.h
的内容。
④
文件包含可以嵌套,即被包含文件中又包含另一个文件。例如,文件
f2.h
中要使用到文件
f1.h
的内容,文件
f3.h
要使用到文件
f2.h
的内容,则可在文件
f2.h
中用
#include "f1.h"
命令,在文件
f3.h
中用
#include "f2.h"
命令,即定义如下:
文件
f1.h
:
{
… …
}
文件
f2.h
:
#include "f1.h"
int max()
{
… …
}
文件
f3.h
:
#include "f2.h"
main
{
… …
}
#include
命令一般用来把
C
语言提供的标准库头文件(如
stdio.h
、
math.h
)包含到程序中。程序员也可以自己定义一个头文件,写入一些常用的函数原型、宏定义、结构和联合类型定义等,然后将它包含到程序中。例如:
#include "stdio.h"
(标准输入
/
输出函数库)
#include "math.h"
(数学函数库)
#include "stdlib.h"
(常用函数库)
#include "string.h"
(字符串处理函数库)