質問するログイン新規登録

回答編集履歴

1

enum を使った手法を追加

2019/10/29 08:31

投稿

SaitoAtsushi
SaitoAtsushi

スコア5749

answer CHANGED
@@ -6,4 +6,13 @@
6
6
 
7
7
  しかし、結果的に問題はないといっても意図しているのはプログラム全体で唯一の値ということでしょうから、そういう意味では誤りですし、もし `TEISU_A` `TEISU_B` のアドレスを取ろうとすれば、その結果はコンパイル単位ごとに違う値になります。
8
8
 
9
- C++17 からならば `inline` 変数を使うべしと言い切ってしまえるのですが、 C++11 だと定数の定義をどうすべきなのかというのはなかなか微妙な話で、なんだかんだで `#define` で定義するのが楽というのが現実です。
9
+ C++17 からならば `inline` 変数を使うべしと言い切ってしまえるのですが、 C++11 だと定数の定義をどうすべきなのかというのはなかなか微妙な話で、なんだかんだで `#define` で定義するのが楽というのが現実です。
10
+
11
+ `#define` では `namespace` に入れられませんので、 `namespace` 中で `quint8` 型の整数定数を定義するという条件に合うようにするには `enum` を用いる方法が考えられます。
12
+
13
+ ```cpp
14
+ namespace TMP_NAME
15
+ {
16
+ enum : quint8 { TEISU_A = 10, TEISU_B = 20 };
17
+ }
18
+ ```