我的项目中有一个奇怪的多重定义错误。我正在使用#ifndef
预处理器命令来避免多次包含同一个文件。我清除了所有其他代码。这是我的简化文件:
1 - main.cpp
#include "IP.hpp"
int main()
{
return 0;
}
2 - IP.cpp
#include "IP.hpp"
//some codes!
3 - IP.hpp
#ifndef IP_HPP_INCLUDED
#define IP_HPP_INCLUDED
unsigned char LUTColor[2];
#endif // IP_HPP_INCLUDED
在win7中使用代码块和gnu gcc,它说:
obj\Debug\main.o:C:\Users\aaa\Documents\prg\ct3\main.cpp|4|首先在这里定义|
||=== 构建完成:1 个错误,0 个警告 ===|
在我删除所有其他代码之前,错误是:
||=== 边缘测试,调试 ===|
obj\Debug\IP.o||在函数“Z9getHSVLUTPA256_A256_12colorSpace3b”中:|
c:\program files\codeblocks\mingw\bin..\lib\gcc\mingw32\4.4.1\include\c++\exception|62|`LUTColor'的多重定义|
obj\Debug\main.o:C:\Users\aaa\Documents\prg\edgetest\main.cpp|31|首次定义在这里|
||=== 构建完成:2 个错误,0 个警告 ===|
'LUTColor' 在 IP.hpp 中!
怎么了?