| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1606 人关注过本帖
标题:问一个关于C语言的多文件编译和头文件的问题
只看楼主 加入收藏
流云神行
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-3-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
问一个关于C语言的多文件编译和头文件的问题
我对头文件的这块理解有点模糊,网上查了一些资料但是还是有点不懂。
简单来说是这样的,我现在有三个c文件:

main.c

A.c

B.c

然后,我写了两个头文件:

A.h

B.h

我的问题是,在头文件中,用了条件编译,(#ifndef #define #endif ),那假如我在头文件A.h中定义了一个变量:

A.h

#ifndef
#define
extern int vlaue =10;
#endif


然后在 main.c和 B.c中  #include A.h ,那第一次条件编译后,定义了value,那在其他两个C文件编译时,还会重复定义value么?是A.h中的#define只能在A.h中用?






搜索更多相关主题的帖子: include C语言 网上 资料 
2016-04-08 11:39
wyw19880809
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:178
专家分:738
注 册:2013-3-14
收藏
得分:20 
extern只是声明了value而已,没有定义。正确定义后,只要包含了A.h就都可以使用value,你的ifndef会防止多次重复编译,也就是整个工程只编译A.h一次,其他源文件包含了A.h也不再编译而已,不影响正常逻辑的使用
2016-04-08 14:11
流云神行
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-3-30
收藏
得分:0 
回复 2楼 wyw19880809
我现在遇到一个问题,就是我在A.h文件写了     extern int value=10  然后在B.c,首先,#include A.h, 然后我在B.c里面写了一个函数,直接调用了value.

这样一来,编译的时候,提示重复定义。

但如果,我只改一个地方, 就是 extern int value  ,然后在B.c不变,还是在里面调用了value, 这样一来编译顺利通过。

为什么会这样?
2016-04-08 17:18
快速回复:问一个关于C语言的多文件编译和头文件的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016460 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved