[1745] Re:Cにおける列挙型の扱いについて
投稿者:774RR
2011/10/07 13:32:08
>例えばメンバの値の範囲がcharで収まるなら、
>処理系はcharを使って領域を節約してもよい
ですます。たとえば gcc であれば -fshort-enums オプションがあります。
enum e_aaa { aaa=1 };
printf("%zd\n", sizeof (enum e_aaa));
-fshort-enums なしでコンパイルすると 4
-fshort-enums ありでコンパイルすると 1
>あくまで「(charと適合する)列挙型の列挙定数」であって、
>式の中に現れると汎整数拡張されてint型に格上げされる
ですます。
ただし sizeof('a') と同様に C と C++ で違うところなので要注意。
printf("%zd\n", sizeof (aaa));
gcc -fshort-enums hoge.c だと 4
g++ -fshort-enums hoge.cpp だと 1