- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
文件包含与头文件
文件包含 与 头文件的写法
很多人对C语言中的 “文件包含”都不陌生了,文件包含处理在程序开发中会给我们的模块化程序设计带来很大的好处,通过文件包含的方法把程序中的各个功能模块联系起来是模块化程序设计中的一种非常有利的手段。
?????? 文件包含处理是指在一个源文件中,通过文件包含命令将另一个源文件的内容全部包含在此文件中。在源文件编译时,连同被包含进来的文件一同编译,生成目标目标文件。
??? 很多人再初学时都会对这个很晕,怎么写文件件? 怎么包含才能避免重定义? 等等问题。。。
?
?? ?其实这个只要了解了文件包含的基本处理方法就可以对文件包含有一个很好的理解与应用了,下来我们一起来看一下:
?
??文件包含的处理方法:
?? 首先大家需要清楚:
??(1) 处理时间:文件包含也是以#开头来写的(#include ), 那么它就是写给预处理器来看了, 也就是说文件包含是会在编译预处理阶段进行处理的。
??(2) 处理方法:在预处理阶段,系统自动对#include命令进行处理,具体做法是:降包含文件的内容复制到包含语句(#include )处,得到新的文件,然后再对这个新的文件进行编译。
?
? 抓住这两点,那么这个东东就没有什么难的了。。。
? 一般情况下文件包含分为两种:包含.h文件 和 包含.c文件
1. 当然对于这两情况也都是按照上面说的方法来处理的。呵呵,这个肯定是没得说的.
2.?包含.c文件 和编译多文件程序 是不同的。???多文件程序:?是在源文件编译时把多个文件进行编译、连接在一起生成一个可执行文件。???包含.c文件:?按照我们上边的说法则是把多个文件合并为一个文件进行编译。
接下来通过例子看一下:(1)包含.c文件:
1: //file1: main.c
2: #include
3: #include fun.c
4: int main()
5: {
6: int a=5,b=19;
7: c = a;
8: sun(a,b);
9: printf(c=%d\n,c);
10: return 0;
11: }
12: //end of file1
1: //file2: fun.c
2: int c=0;
3: void sun(int a, int b)
4: {
5: printf(a+b=%d\n,a+b);
6: c=0;
7: printf(c=%d\n,c);
8: }
9: //end of file2
10:
这个例子是采用 包含.c文件 的方法实现的。
?
在编译时,直接去编译main.c文件,预处理器会先把fun.c文件中的内容复制到main.c中来,然后再对新的main.c进行编译。编译命令:??? gcc main.c -o main
可以看到,这里并没有对fun.c进行编译,但还是生成了最终的main可执行程序。
也可以通过命令来观察一下预处理的结果:
编译命令:???gcc -E main.c -o main.cpp在main.cpp文件末尾可以看来下面一段代码:
1: //main.cpp文件中
2: 931 # 2 main.c 2
3: 932 # 1 fun.c 1
4: 933 //注意这里是fun.c里边的内容
5: 934 int c=0;
6: 935 void sun(int a, int b)
7: 936 {
8: 937 printf(a+b=%d\n,a+b);
9: 938 c=0;
10: 939 printf(c=%d\n,c);
11: 940 }
12: //这里是main函数
13: 941 # 3 main.c 2
14: 942 int main()
15: 943 {
16: 944 int a=5,b=19;
17: 945 c = a;
18: 946 printf(c=%d\n,c);
19: 947 sun(a,b);
20: 948 printf(c=%d\n,c);
21: 949 return 0;
22: 950 }
可见,其实就是将fun.c文件中的内容添加到了main函数之前,然后对新的文件进行编译,生成最终的可执行程序。
?
(2)编译多文件程序:同样是上边的例子,把main.c中“ #include fun.c ”注释掉,加上一句:“e
文档评论(0)