次の構造が必要なプロジェクトに取り組んでいます。
2つのCPPファイルにはクラスが含まれており、これらのクラスにはHファイル1にあるネイキッド関数が必要です。クラスとネイキッドにはHファイル2にある変数が必要です。
CPPファイルを分割して、nakesと必要な変数を含む2つの別々のファイルを使用することができます。しかし、私はこの構造を使用することを好みます。
コンパイラが#ifndefコマンドをスキップしているようです。問題をテストしました。
主要:
#include <iostream>
//1>CPPFile2.obj : error LNK2005: "bool Test1" (?Test1@@3_NA) already defined in CPPFile1.obj
//1>CPPFile2.obj : error LNK2005: "bool Test2" (?Test2@@3_NA) already defined in CPPFile1.obj
int main()
{
}
CPPファイル1:
#include <iostream>
using namespace std;
#include "HFile1.h"
CPPファイル2:
#include <iostream>
using namespace std;
#include "HFile2.h"
HFile 1:
#include "HFile2.h"
#pragma once
#ifndef Name1
#define Name1
//Use test1, this workes fine
//Use test2, this workes fine
#endif
HFile 2:
#pragma once
#ifndef Name2
#define Name2
bool Test1 = false;
bool Test2 = false;
#endif
#ifndef #define #endif構造が正しく機能しない可能性はどのようにありますか?