2.1 文件的包含方式

在C语言代码中,我们可能会经常见到以下两种头文件的引用方式:

include"文件名"

include<文件名>

这两种引用方式之间的区别就在于,在以<文件名>方式引用的时候,如果采用VC++6.0进行编译,那么会先在系统头文件目录中查找,若查找失败,再到当前目录中查找,还查找不到则报错;如果在Linux环境下采用gcc进行编译,那么仅在系统头文件目录中查找,查找不到则报错(这就是后面采用<print.h>方式引用自定义的print.h头文件编译失败的原因)。以“文件名”方式引用的时候,不管是用VC++6.0还是用gcc编译,编译时都先在当前目录中查找,如果查找失败,再到系统头文件目录中查找,还查找不到则报错。

接下来,我们通过下面两段代码来具体分析。

第一段:


include"stdio.h"

int main()

{

printf("Hello World!\n");

return 0;

}


VC++6. 0编译运行的结果:


Hello World!


在Linux环境下用gcc编译运行的结果:


Hello World!


第二段:


include<stdio.h>

int main()

{

printf("Hello World!\n");

return 0;

}


VC++6. 0编译运行的结果:


Hello World!


在Linux环境下用gcc编译运行的结果:


Hello World!


我们发现这两种引用方式没有任何区别,都能成功打印出“Hello World!”。适当修改一下代码,定义一个头文件print.h,在print.h头文件中定义一个print()函数,实现打印输出“Hello World!”。在main()函数源文件中加入print.h头文件,然后在main()函数中调用print()函数实现打印输出。其中,print.h头文件的代码如下:


include<stdio.h>

void print()

{

printf("Hello World!\n");

return;

}


然后用两种方法来引用print.h头文件。

方法一:以#include"print.h"方法来引用,代码如下。


include"print.h"

int main()

{

print();

return 0;

}


VC++6. 0编译运行的结果:


Hello World!


在Linux环境下用gcc编译运行的结果:


Hello World!


方法二:以#include<print.h>方法来引用,代码如下:


include<print.h>

int main()

{

print();

return 0;

}


VC++6. 0编译运行结果:


Hello World!


在Linux环境下,gcc编译运行时出错,错误信息:


main.c:1:19:fatal error:print.h:No such file or directory

compilation terminated.


我们发现,通过VC++6.0编译运行时,两种头文件的引用方法没有区别。但是在Linux环境下采用gcc编译运行的时候,对于系统头文件,使用两种方法都可以,但是对于自己定义的头文件,只能使用#include“文件名”的方式。