首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问一个初学者有关问题 : 头文件重复包含,link时会报错.怎么解决

2012-03-27 
请教一个菜鸟问题 : 头文件重复包含,link时会报错.如何解决?情况是这样:工程中有ConstantDefine.hmain.cpp

请教一个菜鸟问题 : 头文件重复包含,link时会报错.如何解决?
情况是这样:

工程中有
ConstantDefine.h
main.cpp 
classA.h classA.cpp

其中,ConstantDefine.h 中定义了常量
intSCREEN_WIDTH = 640;
int SREEN_HEIGHT = 480;

在main.cpp中包含了 ConstantDefine.h
在classA.h中也包含了 ConstantDefine.h.

所有的.h文件,我都用 
#ifndefine #define #endif 做了防止多次包含的处理(也试了 #pragma once,效果相同).

但是在编译的时候没有错误,链接的时候依然提示我

1>main.obj : error LNK2005: "int SCREEN_WIDTH" (?SCREEN_WIDTH@@3HA) already defined in dxManager.obj
1>main.obj : error LNK2005: "int SCREEN_HEIGHT" (?SCREEN_HEIGHT@@3HA) already defined in dxManager.obj


如何解决?

我在网上查了不少,还是没找到解决办法.复制粘贴的就别回复了.

求明白的前辈指点,谢谢!

[解决办法]
所有h里加extern。extern int some_var;
然后只在一个cpp里实际定义这个变量
[解决办法]

C/C++ code
其中,ConstantDefine.h 中定义了常量int SCREEN_WIDTH = 640;int SREEN_HEIGHT = 480;
[解决办法]
头文件里只声明,定义放在源文件里
[解决办法]
探讨
所有h里加extern。extern int some_var;
然后只在一个cpp里实际定义这个变量

[解决办法]
头文件中用extern,在一个cpp中定义。
[解决办法]
msdn里面给了三种方法,1楼的方法是可行的

热点排行