【问题标题】:Why do most enum values end with BUTT specifier in declaration?为什么大多数枚举值在声明中都以 BUTT 说明符结尾?
【发布时间】:2014-07-14 12:24:28
【问题描述】:

在阅读大部分开源代码时,我经常看到enum 值以_BUTT 说明符结尾?听起来可能很幼稚,但这样的编码风格有什么意义吗?

示例 1:

typedef enum __nvp1114a_samplerate {
        NVP1114A_8000,
        NVP1114A_16000,
        NVP1114A_32000,
        NVP1114A_44100,
        NVP1114A_48000,
        NVP1114A_BUTT
} nvp1114a_samplerate;

示例 2:

typedef enum hiVIDEO_NORM_E
{
    VIDEO_ENCODING_MODE_PAL=0,
    VIDEO_ENCODING_MODE_NTSC,
    VIDEO_ENCODING_MODE_AUTO,
    VIDEO_ENCODING_MODE_BUTT
} VIDEO_NORM_E;

【问题讨论】:

  • 所以你可以象征性地指定枚举中可能值的数量。
  • 它的值的计数
  • 我从未在 Java 中看到过这种情况,因为 Java 中的 enum 是对象而不是整数,所以这也没有意义。
  • 不理解反对票,这个问题有什么问题?
  • @sp2danny 或许 SO 上的大多数网民都饱受Hundredth monkey effect 的困扰,在这种情况下,以前学到的行为/反对票会立即传播到所有网民。

标签: java c++ c enums coding-style


【解决方案1】:

最后一个_BUTT常量的值是枚举类型中常量的个数(不包括_BUTT一个)。

最后一个常量不是必需的,它的存在和命名只是程序员的个人选择。

【讨论】:

  • 但是为什么这些信息需要在枚举声明中?
  • @Manav 不需要
  • 我认为_BUTT 对错误检查没有多大用处,但我可以用它来遍历所有枚举值。
  • Re:错误检查,可用于检查整数值是否在枚举范围内。
  • 如果你在枚举中最后一个,它会在你添加值时自动更新
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-22
  • 1970-01-01
  • 2013-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多