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“文件名”的方式。