2012-07-01 60 views
2

我想知道如何。C++如何获取sizeof(枚举)== sizeof(char)?

我已经看过this topic,据我所知,“类型的选择是实现定义的。”,但我很好奇,想知道如何获得的1而不是4

+0

这不是你可以得到,这是它是如何。虽然它可能在C++ 11中(不确定)。 –

+0

@violet Cat Plus Plus的答案奏效。我得到了1! :-顺便问一下,请问你是女性还是男性? – wagashi

+0

为什么你需要这样做?枚举的大小通常不应该重要(除非你创建了非常大的枚举数组)。 –

回答

8

C++ 11引入了方法来改变枚举的基础类型。

enum foo : char { ... }; 
enum class foo : char { ... }; 

不过,在大多数情况下,使用默认的int可能会更好。

+0

它与C++一起工作。谢谢:) – wagashi

+4

@wagashi Erm,C++ 11 *是* C++。 –

+0

@r你是对的^^; – wagashi

1

在GCC,你也可以使用“打包”属性告诉你更在乎万字对齐/接入速度的空间中,编译器:

enum foo { ... } __attribute__((packed)); 

还有为其他编译器也类似提示。

(试图避免那些尚未通过你的编译器或IDE支持的任何C++ 11的功能时,这是非常有用的。)