私のコードは非常に大きいですが、私はできるだけ最善を尽くすようにここで最小化しようとします。グローバルに定義されている静的変数がリセットされるのはなぜですか?
基本的に私は1つの場所(私のメイン)で変更された文字列を定義して、私のプログラム全体で読み上げたいと思っています。
私のdefine.hはどこにも含まれていますので、そこに定義しました。私は私の主な機能には
static std::string MAINLOG = "RANDOMNES";
:
for (int i = 0; i < files.size(); i++){
// Do stuff
prepDbugDir(); // This sets MAINLOG to "CORRECT_VALUE"
std::cout << "Before " << MAINLOG << std::endl;
// Call a class function whose includes include my defines.h
std::cout << "After " << MAINLOG << std::endl;
}
そして、私のファイルの印刷が
Before CORRECT_VALUE
RANDOMNESS
After CORRECT_VALUE
だから私の質問は、なぜ、どのようにされている私は価値があることを得ることができます私のクラスの中で維持されます。
複数の* .aまたは* .oプログラム情報を分割しましたか?それはいくつかのオブジェクトファイルにあなたの分割のプログラミングのために、MAINLOGのいくつかのコピーが存在するようです。 –
コンパイルすると、はい。それが問題ならば、これを回避する方法がありますか? – aarelovich
MAINLOGの宣言をヘッダーに入れ、ヘッダ(おそらくdefine.cpp)を含む単一の.cppファイルに1回だけ定義を入れてみてください。 – Baldrick