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

aiyaya730 2012-03-16 03:29:35
情况是这样:

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

其中,ConstantDefine.h 中定义了常量
int SCREEN_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


如何解决?

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

求明白的前辈指点,谢谢!
...全文
194 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
玩笑 2012-05-21
  • 打赏
  • 举报
回复
#ifndef FLAG
#define FLAG
//code
#endif
anew_1916 2012-03-16
  • 打赏
  • 举报
回复
msdn里面给了三种方法,1楼的方法是可行的
maoloverme1 2012-03-16
  • 打赏
  • 举报
回复
头文件中用extern,在一个cpp中定义。
quwei197874 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fancymouse 的回复:]
所有h里加extern。extern int some_var;
然后只在一个cpp里实际定义这个变量
[/Quote]++
ouyh12345 2012-03-16
  • 打赏
  • 举报
回复
头文件里只声明,定义放在源文件里
we_sky2008 2012-03-16
  • 打赏
  • 举报
回复

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


--->


//ConstantDefine.h 中定义常量要加上const
const int SCREEN_WIDTH = 640;
const int SREEN_HEIGHT = 480;
FancyMouse 2012-03-16
  • 打赏
  • 举报
回复
所有h里加extern。extern int some_var;
然后只在一个cpp里实际定义这个变量
aiyaya730 2012-03-16
  • 打赏
  • 举报
回复
谢谢各位热心帮忙!

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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