工程中有
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
如何解决?
我在网上查了不少,还是没找到解决办法.复制粘贴的就别回复了.
求明白的前辈指点,谢谢!
8 个解决方案
#1
所有h里加extern。extern int some_var;
然后只在一个cpp里实际定义这个变量
然后只在一个cpp里实际定义这个变量
#2
其中,ConstantDefine.h 中定义了常量
int SCREEN_WIDTH = 640;
int SREEN_HEIGHT = 480;
--->
//ConstantDefine.h 中定义常量要加上const
const int SCREEN_WIDTH = 640;
const int SREEN_HEIGHT = 480;
#3
头文件里只声明,定义放在源文件里
#4
++
#5
头文件中用extern,在一个cpp中定义。
#6
msdn里面给了三种方法,1楼的方法是可行的
#7
谢谢各位热心帮忙!
#8
#ifndef FLAG
#define FLAG
//code
#endif
#1
所有h里加extern。extern int some_var;
然后只在一个cpp里实际定义这个变量
然后只在一个cpp里实际定义这个变量
#2
其中,ConstantDefine.h 中定义了常量
int SCREEN_WIDTH = 640;
int SREEN_HEIGHT = 480;
--->
//ConstantDefine.h 中定义常量要加上const
const int SCREEN_WIDTH = 640;
const int SREEN_HEIGHT = 480;
#3
头文件里只声明,定义放在源文件里
#4
++
#5
头文件中用extern,在一个cpp中定义。
#6
msdn里面给了三种方法,1楼的方法是可行的
#7
谢谢各位热心帮忙!
#8
#ifndef FLAG
#define FLAG
//code
#endif