码迷,mamicode.com
首页 > 其他好文 > 详细

头文件,库文件,重复包含

时间:2018-09-07 22:47:25      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:情况   adf   int   clu   col   printf   替换   存在   进入   

//a.c

#include <stdio.h>
#include "a.h"
#include "b.h"
void main(void)
{
printf("safadf %d",i);
}
//a.c end
//a.h
#include "b.h"
//a.h end
//b.h
int i = 3;
//b.h end
/*本例中主程序在a.c中定义。
正常情况下,这三个文件都在同一目录下,进入该目录,然后执行
cc -c a.c表示编译a.c文件,编译的时候会把头文件中的内容都加载进来,在此例中,#include "a.h",而a.h中同样存在include,这时,a.h先把b.h中的内容:int i =3;加载进来,然后a.c在把a.h中的内容加载进来,所以a.c文件中的#include a.h最终被替换为为int i=3;等把全部的头文件加载进来以后,然后生成二进制格式的文件,这就是编译的过程。
编译过后本目录下就会出现a.o这个二进制文件,然后用命令cc -o a a.o
生成最终的可执行文件a,
*/

/*此例中,当执行cc -c a.c时,将所有的头文件都加载进来,主程序将变为
int i = 3;
int i = 3;
void main(void)
{
printf("safadf %d",i);
}
显然,i被重复定义了,所以编译会报错
*/

 

头文件,库文件,重复包含

标签:情况   adf   int   clu   col   printf   替换   存在   进入   

原文地址:https://www.cnblogs.com/saolv/p/9607302.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!