【问题标题】:C++ How to get sizeof(enum) == sizeof(char)?C++ 如何获得 sizeof(enum) == sizeof(char)?
【发布时间】:2012-07-01 19:10:09
【问题描述】:

我想知道怎么做。

我看过this topic,我明白“类型的选择是实现定义的。”但我很想知道如何得到1而不是4。

【问题讨论】:

  • 这不是你能得到的东西,它就是这样。虽然在 C++ 11 中可能是可能的(不确定)。
  • @violet Cat Plus Plus 的回答有效。我有1! :-D 顺便问一下你是男还是女?
  • 为什么需要这样做?枚举的大小通常无关紧要(除非您正在创建非常大的枚举数组)。
  • @Keith 你是对的。我很好奇是否可以手动获得 1。就是这样:)

标签: c++ enums sizeof


【解决方案1】:

C++11 引入了一种改变枚举底层类型的方法。

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

不过,在大多数情况下,您最好还是使用默认的 int

【讨论】:

  • @wagashi Erm,C++11 C++。
【解决方案2】:

在 GCC 上,您还可以使用 'packed' 属性告诉编译器您更关心空间而不是字对齐/访问速度:

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

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

(这在尝试避免编译器或 IDE 尚不支持的任何 C++11 功能时很有用。)

【讨论】:

    猜你喜欢
    • 2010-11-09
    • 2017-04-02
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    相关资源
    最近更新 更多