编译问题

xryang 2011-04-27 10:01:29
问题描述:
//conf.h:定义了一些全局变量,读配置表付初值。例如int AAA;

//111.h: #include<conf.h>

//222.h: #include<conf.h>

//main.h:#include<conf.h> #include<111.h> #include<222.h>


这样会报AAA为多重定义。
将int AAA 修改为 static int AAA编译可以通过。

请问原因。
小弟万谢
...全文
104 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xryang 2011-04-27
  • 打赏
  • 举报
回复
是不是还是要
//conf.h:声明变量
//conf.cpp:定义变量(从配置文件读)

这样更合理呢?
pathuang68 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pengzhixi 的回复:]

因为头文件里面不要放定义。定义放到.cpp文件
[/Quote]

++
xryang 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jiang_dlut 的回复:]

static变量放在头文件中的话,被2个不同的cpp文件分别引入时,
那么这两个cpp都有一个自己的这个static变量,并且相互不受影响。
你可以试试。
[/Quote]

这样是可以解释得通哈。
想这样读取配置的全局变量一般都怎么写呢更好呢?
jiang_dlut 2011-04-27
  • 打赏
  • 举报
回复
static变量放在头文件中的话,被2个不同的cpp文件分别引入时,
那么这两个cpp都有一个自己的这个static变量,并且相互不受影响。
你可以试试。
小屁孩 2011-04-27
  • 打赏
  • 举报
回复
学习、、、变量的声明和定义不管是在.h中还是.cpp形式不都一样么、、
xryang 2011-04-27
  • 打赏
  • 举报
回复
谢 pengzhixi。
为什么前面加上static就可以编译通过了呢?

因为我不想写个conf.cpp。
直接在conf.h中以static int AAA这样的形式定义一些全局变量有那些利弊?

谢谢。
luciferisnotsatan 2011-04-27
  • 打赏
  • 举报
回复
全局写成
extern int AAA
chengzhe 2011-04-27
  • 打赏
  • 举报
回复
在cpp中定义, 在h中声明, 可以改成extern int AAA
pengzhixi 2011-04-27
  • 打赏
  • 举报
回复
因为头文件里面不要放定义。定义放到.cpp文件

64,650

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧