1. ホーム
  2. c++

[解決済み] C++ グローバル変数宣言

2022-03-06 04:47:50

質問


あるヘッダーファイルで変数を定義し、その変数をインクルードするたびに再定義することなく、2つの異なるcppファイルで使用したいのです。
以下は、私が試した方法です。

変数.h

#ifndef VARIABLES_H // header guards
#define VARIABLES_H

static bool bShouldRegister;

#endif

(externも試しましたが、何も変わりませんでした)

そして、cppファイルの中で、値を与えています。 ::bShouldRegister = true または bShouldRegister = true;

別のcppファイルでは、スレッドを作成してその値をループでチェックしています(そして、私のスレッド関数はうまく動作しています)。

 while (true)
 {
     if (::bShouldRegister) // Or if (bShouldRegister)
        {
            MessageBox(NULL,"Value Changed","Done",MB_OK|MB_ICONINFORMATION);
        }
  Sleep(100);
 }

そして、そう、そのメッセージボックスは表示されない(bShouldRegisterがtrueにならない:/)。

解決するには?

を使用する必要があります。 extern そうでない場合は bShouldRegister という変数があり、各翻訳ユニットでおそらく異なる値をとります。

これをヘッダーファイル(.h)に記述してください。

extern bool bShouldRegister;

実装ファイル(.cpp)に記述してください。

bool bShouldRegister;