У меня есть странная ошибка нескольких определений в моем проекте. Я использую команду препроцессора #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
Использование CodeBlocks & гну ССАГПЗ в win7, он говорит:
OBJ \ Debug \ main.o: C: \ Users \ ааа \ Documents \ PRG \ ct3 \ main.cpp | 4 | первый здесь определяется |
|| === Сборка завершена: 1 ошибка, 0 предупреждений === |
Прежде чем я удалил все другой код, ошибка:
|| === edgetest, Debug === |
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!
Что случилось?
возможно дубликат [повторные многократных ошибок Определения от включая то же заголовок в несколько КППСЕ] (http://stackoverflow.com/questions/ 223771/repeat-multiple-definition-errors-from-including-same-header-in-multiple-cpps) –