您的位置 首页 硬件

C程序中关于c和h的包括问题

首先声明一下:下面文章都是网络搜索结果,本人浮躁的心情决对没有时间这样仔细地解释问题的,所以我要感谢一下原作者,辛苦了!由于学STM3

首要声明一下:下面文章都是网络查找成果,自己浮躁的心境决对没有时刻这样细心地解说问题的,所以我要感谢一下原作者,辛苦了!由于学STM32的联系,需求要点了解“看似没有调用,实际上却包括了”的技巧,这个技巧自己在没有读过文章之前还的确不了解。

*********************************************************************************************************************************************************************

很多人对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:intmain()
5:{
6:inta=5,b=19;
7:c = a;
8:sun(a,b);
9:printf(“c=%d”,c);
10:return0;
11:}
12://end of file1
1://file2: fun.c2:intc=0;3:voidsun(inta,intb)4:{5:printf(“a+b=%d”,a+b);6:c=0;7:printf(“c=%d”,c);8:}9://end of file210:
这个比如是选用 包括.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”23:932 # 1″fun.c”14:933//留意这儿是fun.c里面的内容5:934intc=0;6:935voidsun(inta,intb)7:936 {8:937 printf(“a+b=%d”,a+b);9:938 c=0;10:939 printf(“c=%d”,c);11:940 }12://这儿是main函数13:941 # 3″main.c”214:942intmain()15:943 {16:944inta=5,b=19;17:945 c = a;18:946 printf(“c=%d”,c);19:947 sun(a,b);20:948 printf(“c=%d”,c);21:949return0;22:950 }
可见,其实便是将fun.c文件中的内容增加到了main函数之前,然后对新的文件进行编译,生成终究的可执行程序。
(2)编译多文件程序:
同样是上边的比如,把main.c中“ #include “fun.c” ”注释掉,加上一句:“extern int c;”由于 c 变量在别的一个文件(fun.c)中界说。
1://file1: main.c2:#include3://#include “fun.c” //注释掉4:externintc;//增加这一句5:intmain()6:{7:inta=5,b=19;8:c = a;9:sun(a,b);10:printf(“c=%d”,c);11:return0;12:}13://end of file114:15:16://file2: fun.c17:intc=0;18:voidsun(inta,intb)19:{20:printf(“a+b=%d”,a+b);21:c=0;22:printf(“c=%d”,c);23:}24://end of file2

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/yingjian/317810.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部