2017-02-23 2 views
-2

グローバル変数を初期化し、C++で次のコードのように定義できますか? そうでない場合は、詳しい理由を説明できますか?グローバルconst変数を初期化するのは安全ですか?

私は古いコードをたくさん担当しています。このようなコードスニペットがたくさんあります。安全に再構築するにはどうすればよいですか?

// initialize the global variable with the result from a function call 
const double g_dbScale = CHelper::GetSystemDPI(); 

#define DEFAULT_WIDTH  (500 * g_dbScale) 
#define DEFAULT_HEIGHT  (200 * g_dbScale) 
+0

に関連しています。しかし、なぜDEFAULT_WIDTHとDEFAULT_HEIGHTにも 'const double'変数を使用しないのはなぜですか? –

+0

@ M.Mこれらは他人の古いコードですが、私はそのようなコードが嫌いです。しかし、そのような使い方はたくさんあります。 –

+0

トリック質問 - 定義を初期化することはできません。 – immibis

答えて

1

私は、この機能は、他のグローバルvarialbeか、[OK]をする必要があり、いくつかの他の問題を参照していない場合、それはあなたのfuncion CHelper::GetSystemDPI(); に依存だと思います。

C++は、異なるコンパイル単位のグローバル変数の初期化シーケンスを保証しません。

はい、あなたがそれを行うことができますmay-i-initialize-a-global-variable-with-the-result-of-a-function-call

関連する問題