列挙が占有するストレージの量を指定する。
構文の注意事項:
- C コンパイルのデフォルト
- C++ コンパイルのデフォルト
ここで、有効な enum 設定は、以下のとおりです。
1 列挙が 1 バイトのストレージを占有すること、および、列挙の値の範囲が signed char の制限内である場合、型が char になること、それ以外の場合は unsigned char になることを指定します。 2 列挙が 2 バイトのストレージを占有すること、および、列挙の値の範囲が signed short の制限内である場合、型が short になり、それ以外の場合は unsigned short になることを指定します。 4 列挙が 4 バイトのストレージを占有すること、および、列挙の値の範囲が signed int の制限内である場合、型が int になり、それ以外の場合は unsigned int になることを指定します。 8 列挙が 8 バイトのストレージを占有することを指定します。
32 ビット・コンパイル・モードでは、列挙値の範囲が signed long long の制限内にある場合、その列挙は long long 型で、そうでない場合は unsigned long long です。
64 ビット・コンパイル・モードでは、列挙値の範囲が signed long の制限内にある場合は、その列挙は long 型で、そうでない場合は unsigned long です。int 列挙が 4 バイトのストレージを占有して、 int で表されることを指定します。値は、 C コンパイルにおける signed int の範囲を超えることはできません。 intlong 列挙の値の範囲が int の限度を超える場合、列挙が 8 バイトのストレージを占有することを指定します。 -qenum=8 の説明を参照してください。
列挙の値の範囲が int の制限を超えない場合は、列挙は 4 バイトのストレージを占有し、int によって示されます。small 列挙が列挙内の値の範囲を正確に表せる最小のスペース (1、2、4、または 8 バイトのストレージ) を占有するように指定します。値の範囲に負の値が含まれない限り、符号は unsigned です。
8 バイトの enum が結果として生じる場合、実際に使用される列挙型はコンパイル・モードに依存しています。-qenum=8 の説明を参照してください。
#pragma enumおよび #pragma optionsも参照してください。
-qenum=small オプションは、 enum 定数の範囲を表すことができる最小の事前定義型に必要なストレージの量を enum 変数 に割り振ります。デフォルトでは、符号なしの事前定義型が使用されます。enum 定数のいずれかが負の場合は、符号付きの事前定義型が使用されます。
-qenum=1|2|4|8 オプションは、 enum 変数 に特定の量のストレージを割り振ります。指定されたストレージ・サイズが enum 変数の範囲が必要とするサイズよりも小さい場合は、重大エラー・メッセージが出され、コンパイルが停止します。
ISO C 1989 および ISO C1999 規格では、列挙範囲が int の範囲を超えないことが要求されます。有効な -qlanglvl=stdc89 または -qlanglvl=stdc99 でコンパイルすると、列挙の値が int の範囲を超える場合、コンパイラーは以下のように振る舞います。
以下の表に、事前定義型の選択のための優先順位を示します。この表には、事前定義型、対応する事前定義型の enum 定数の最大範囲、およびその事前定義型に必要なストレージの量、つまり、最小サイズの enum に適用した場合に、 sizeof 演算子によって得られる値も示します。
コンパイラーのコマンド行オプション
#pragma enum
#pragma options
Enum サイズと型 - 特に断りがない限り、すべての型が signed です。 | ||||||||||
enum=1 | enum=2 | enum=4 | enum=8 | |||||||
32 ビット・コンパイル・モード | 64 ビット・コンパイル・モード | |||||||||
範囲 | var | const | var | const | var | const | var | const | var | const |
0..127 | char | int | short | int | int | int | long long | long long | long | long |
-128..127 | char | int | short | int | int | int | long long | long long | long | long |
0..255 | unsigned char | int | short | int | int | int | long long | long long | long | long |
0..32767 | ERROR1 | int | short | int | int | int | long long | long long | long | long |
-32768..32767 | ERROR1 | int | short | int | int | int | long long | long long | long | long |
0..65535 | ERROR1 | int | unsigned short | int | int | int | long long | long long | long | long |
0..2147483647 | ERROR1 | int | ERROR1 | int | int | int | long long | long long | long | long |
-(2147483647+1) ..2147483647 | ERROR1 | int | ERROR1 | int | int | int | long long | long long | long | long |
0..4294967295 | ERROR1 | unsigned int | ERROR1 | unsigned int | unsigned int | unsigned int | long long | long long | long | long |
0..(263-1) | ERROR1 | long2b | ERROR1 | long2b | ERROR1 | long2b | long long2b | long long2b | long2b | long2b |
-263..(263-1) | ERROR1 | long2b | ERROR1 | long2b | ERROR1 | long2b | long long2b | long long2b | long2b | long2b |
0..264 | ERROR1 | unsigned long2b | ERROR1 | unsigned long2b | ERROR1 | unsigned long2b | unsigned long long2b | unsigned long long2b | unsigned long2b | unsigned long2b |
注:
|
Enum サイズと型 - 特に断りがない限り、すべての型が signed です。 | ||||||||||
enum=int | enum=intlong | enum=small | ||||||||
32 ビット・コンパイル・モード | 64 ビット・コンパイル・モード | 32 ビット・コンパイル・モード | 64 ビット・コンパイル・モード | |||||||
範囲 | var | const | var | const | var | const | var | const | var | const |
0..127 | int | int | int | int | int | int | unsigned char | int | unsigned char | int |
-128..127 | int | int | int | int | int | int | signed char | int | signed char | int |
0..255 | int | int | int | int | int | int | unsigned char | int | unsigned char | int |
0..32767 | int | int | int | int | int | int | unsigned short | int | unsigned short | int |
-32768..32767 | int | int | int | int | int | int | short | int | short | int |
0..65535 | int | int | int | int | int | int | unsigned short | int | unsigned short | int |
0..2147483647 | int | int | int | int | int | int | unsigned int | unsigned int | unsigned int | unsigned int |
-(2147483647+1) ..2147483647 | int | int | int | int | int | int | int | int | int | int |
0..4294967295 | unsigned int | unsigned int | unsigned int | unsigned int | unsigned int | unsigned int | unsigned int | unsigned int | unsigned int | unsigned int |
0..(263-1) | ERR2a | ERR2a | long long2b | long long2b | long2b | long2b | unsigned long long2b | unsigned long long2b | unsigned long2b | unsigned long2b |
-263..(263-1) | ERR2a | ERR2a | long long2b | long long2b | long2b | long2b | long long2b | long long2b | long2b | long2b |
0..264 | ERR2a | ERR2a | unsigned long long2b | unsigned long long2b | unsigned long2b | unsigned long2b | unsigned long long2b | unsigned long long2b | unsigned long2b | unsigned long2b |
注:
|