2011-12-26 17 views
0

私のプロジェクトには奇妙な複数の定義エラーがあります。 私は#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 \デバッグ\のmain.o:C:のAAA \ドキュメント\ \ Users \ユーザーPRG \ CT3 \ main.cppに| 4 |最初のここで定義します|

|| ===ビルド終了:1個のエラー、0警告=== |私は他のすべてのコードを削除する前に、エラーが

た:

|| === edgetest、デバッグ=== |

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にあります。

どういうところが間違っていますか?

+0

可能重複(http://stackoverflow.com/questions/ 223771/repeated-multiple-definition-errors-with-same-head-in-multiple-cpps) –

答えて

3

問題は、ヘッダーにある - あなたが必要とする:

#ifndef IP_HPP_INCLUDED 
#define IP_HPP_INCLUDED 

extern unsigned char LUTColor[2]; // Declare the variable 

#endif // IP_HPP_INCLUDED 
  • ヘッダで変数を定義しないでください!

また、LUTColor(IP.cppは明白な場所です)を定義するためにソースファイルを指定する必要があります。

見る:[複数のCPPに同じヘッダなどから繰り返し複数の定義エラー]のC++に適用されるほとんどがWhat are extern variables in C、ならびにC.

+0

_ヘッダに変数を定義しない!_がconstでない限り! +1 –

+0

'const'と思われるものは_variable_ですか? –

+0

const bool myBad_IsNotVariable = true; –

関連する問題