プリプロセッサコマンドは、変数とクラスが複数回定義されるのを防ぐためのヘッダーファイルの重要な部分であることを理解しています。
変数が複数回定義されているという問題が発生しています。プリプロセッサラッパーを使用している場合でも同様です。コンパイラエラーが発生しているサンプルプロジェクトは次のとおりです。
ヘッダ:
// TestInclude.h
#ifndef TESTINCLUDE_H_
#define TESTINCLUDE_H_
int myInt;
#endif /*TESTINCLUDE_H_*/
C ++:
// TestInclude.cpp
#include <iostream>
#include "IncludeMe.h"
#include "TestInclude.h"
int main( int argc, char* args[] )
{
std::cin >> myInt;
IncludeMe thisClass;
std::cin >> myInt;
}
ヘッダ:
// IncludeMe.h
#ifndef INCLUDEME_H_
#define INCLUDEME_H_
class IncludeMe
{
private:
int privateInt;
public:
IncludeMe();
};
#endif /*INCLUDEME_H_*/
C ++:
// IncludeMe.cpp
#include <iostream>
#include "IncludeMe.h"
#include "TestInclude.h"
IncludeMe::IncludeMe()
{
std::cout << "myInt: " << myInt;
}
次に、次のようにコンパイルします。
Makefile:
all:
g++ -g -o TestInclude TestInclude.cpp IncludeMe.cpp
そして、次のエラーが発生します。
/tmp/ccrcNqqO.o:関数 `IncludeMe'内:
/home/quakkels/Projects/c++/TestInclude/IncludeMe.cpp:6:`myInt'の複数の定義
/tmp/ccgo6dVT.o:/home/quakkels/Projects/ c ++ / TestInclude / TestInclude.cpp:7:ここで最初に定義された
collect2:ldが1つの終了ステータスを返しました
make:***[all]エラー1
ヘッダーファイルでプリプロセッサ条件を使用しているときにこのエラーが発生するのはなぜですか?