0

私は winapi グラフィック ラッパーに取り組んでいますが、c2374 エラー "再定義; 複数の初期化" が発生しました。私の問題を説明するために非常に単純化されたプログラムを作成しました。誰かがこれを解決するのを手伝ってくれることを願っています。注: ここのコードは問題を説明するためだけのものです。そのため、インクルードのカスケードは表示されません。

main.cpp

#include <iostream>
#include "functions.h"
#include "constants.h"


void main()
{
}

/////////////////////////////////////////////// //////////////////////////

関数.h

#include "constants.h"

関数.cpp

#include "functions.h"

/////////////////////////////////////////////// //////////////////////////

定数.h

double pie = 3.14;

定数.cpp

#include "constants.h"

/////////////////////////////////////////////// //////////////////////////

エラーは; エラー C2374: 'pie': 再定義。複数の初期化

この例でわかるように、私はパイを編集したり、別の場所から定数を参照できる以外のことをしたりしていません。私のグラフィックラッパーでは、HRESULT の結果を取得しようとしています。DirectX やスプライトなどを初期化するときに、簡単に失敗しないようにテストできるように定義されています。小さなリクエスト: これに対する回答がある場合は、複数ファイルのプログラミングなどについて学ぶための優れた教科書を教えてください。文字通り教えています。私自身すべて、クラスを買う余裕はありません。ありがとうございました。

進捗:

ヘッダー ファイルに新しいコードブロックが含まれるようになりました

#ifndef //stuff//
#def    //stuff//

//code

#endif

それぞれ独自のタグが付いています。エラーは LNK2005 に変わります: "double pie" (?pie@@3NA) は、constants.obj で既に定義されています。

注: const を使用してこの問題を解決することが提案されましたが、これを代表するより複雑なプログラムでは変数を編集可能にする必要があるため、これは避けたいと思います。

4

1 に答える 1