1. ホーム
  2. c++

[解決済み] C++でグローバル定数を定義する

2023-04-15 04:21:15

質問

C++で定数を定義し、複数のソースファイルから見えるようにしたい。 ヘッダーファイルで定義する方法として、以下のようなものが考えられます。

  1. #define GLOBAL_CONST_VAR 0xFF
  2. int GLOBAL_CONST_VAR = 0xFF;
  3. 値を保持する何らかの関数 (例えば int get_GLOBAL_CONST_VAR() )
  4. enum { GLOBAL_CONST_VAR = 0xFF; }
  5. const int GLOBAL_CONST_VAR = 0xFF;
  6. extern const int GLOBAL_CONST_VAR; そして、1つのソースファイルの中で const int GLOBAL_CONST_VAR = 0xFF;

オプション(1) - は間違いなくあなたが使いたいオプションではありません。

オプション(2) - ヘッダーファイルを使って、各オブジェクトファイルに変数のインスタンスを定義する。

オプション(3) - IMOはほとんどの場合、オーバーキリングです。

オプション (4) - enum には具体的な型がないため、多くの場合、あまりよくありません(C++0X では、型を定義する可能性が追加されます)。

したがって、ほとんどの場合、私は(5)と(6)のどちらかを選択する必要があります。 私の質問です。

  1. (5)と(6)のどちらが良いですか?
  2. なぜ(5)はOKで、(2)はNGなのでしょうか?

どのように解決するのですか?

(5)はまさにあなたが言いたいことを言っています。さらに、それはコンパイラがほとんどの場合、それを最適化することができます。一方、(6) はコンパイラに最適化させません。なぜなら、コンパイラはあなたが最終的にそれを変更するかどうかわからないからです。