关于在头文件中的一个错误
小班得瑞 2012-01-10 10:54:52 使用的编译器是VS2010,一个solution下包含了2个h文件和3个cpp文件。
我在a.h(名字太长,我简化为头文件a)中定义了一个const变量
extern const int nLevel = 256;
然后在main.cpp里包含a.h,编译一切正常,链接给出错误,链接信息如下:
a.obj : error LNK2005: "int const nLevel" (?nLevel@@3HB) already defined in main.obj
1>F:\编程语言\OpenCV\HelloOpenCV\Debug\HelloOpenCV.exe : fatal error LNK1169: one or more multiply defined symbols found
问题是,我在main.cpp里根本就没有再定义该变量,我搜索也没有找到,我让我同学帮我找,他也没在除了a.h外的其他地方找到了声明nLevel的地方。好奇怪啊。
然后,我把extern const int nLevel = 256;注释掉
//extern const int nLevel = 256;
改为#define nLevel 256(在a.h里)
然后链接正确了。
我不知道是什么原因啊,求指教