方法を知りたいです。
このトピックを見て、「型の選択は実装定義です」ということは理解しましたが、4 の代わりに 1 を取得する方法を知りたいです。
C++11 では、列挙型の基になる型を変更する方法が導入されました。
enum foo : char { ... };
enum class foo : char { ... };
int
それでも、ほとんどの場合、デフォルトを使用した方がよいでしょう。
GCC では、'packed' 属性を使用して、ワード アラインメントやアクセス速度よりもスペースを重視することをコンパイラに伝えることもできます。
enum foo { ... } __attribute__((packed));
他のコンパイラにも同様のヒントがあります。
(これは、コンパイラまたは IDE でまだサポートされていない C++11 機能を回避しようとする場合に役立ちます。)