C程序中关于c和h的包含问题
首先声明一下:下面文章都是网络搜索结果,本人浮躁的心情决对没有时间这样仔细地解释问题的,所以我要感谢一下原作者,辛苦了!由于学STM32的关系,需要重点理解“看似没有调用,实际上却包含了”的技巧,这个技巧本人在没有读过文章之前还确实不理解。
*********************************************************************************************************************************************************************
很多人对C语言中的 “文件包含”都不陌生了,文件包含处理在程序开发中会给我们的模块化程序设计带来很大的好处,通过文件包含的方法把程序中的各个功能模块联系起来是模块化程序设计中的一种非常有利的手段。
文件包含处理是指在一个源文件中,通过文件包含命令将另一个源文件的内容全部包含在此文件中。在源文件编译时,连同被包含进来的文件一同编译,生成目标目标文件。
很多人再初学时都会对这个很晕,怎么写文件件? 怎么包含才能避免重定义? 等等问题。。。
其实这个只要了解了文件包含的基本处理方法就可以对文件包含有一个很好的理解与应用了,下来我们一起来看一下:
文件包含的处理方法:
首先大家需要清楚:
(1) 处理时间:文件包含也是以"#"开头来写的(#include ), 那么它就是写给预处理器来看了, 也就是说文件包含是会在编译预处理阶段进行处理的。
(2) 处理方法:在预处理阶段,系统自动对#include命令进行处理,具体做法是:降包含文件的内容复制到包含语句(#include )处,得到新的文件,然后再对这个新的文件进行编译。
抓住这两点,那么这个东东就没有什么难的了。。。
一般情况下文件包含分为两种:包含.h文件 和 包含.c文件
1. 当然对于这两情况也都是按照上面说的方法来处理的。呵呵,这个肯定是没得说的.
2. 包含.c文件 和编译多文件程序 是不同的。
多文件程序: 是在源文件编译时把多个文件进行编译、连接在一起生成一个可执行文件。
包含.c文件: 按照我们上边的说法则是把多个文件合并为一个文件进行编译。
接下来通过例子看一下:
(1)包含.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