【问题标题】:Is it legal to have duplicate enum values in C?在 C 中具有重复的枚举值是否合法?
【发布时间】:2011-04-06 03:30:54
【问题描述】:
enum protocol {
    ascii_prot = 3, /* arbitrary value. */
    binary_prot,
    negotiating_prot = 4 /* Discovering the protocol */
};

binary_protnegotiating_prot 都等于 4

【问题讨论】:

  • N1265 C99 draft 在 6.7.2.2/3 “枚举说明符”中明确允许:“使用带有 = 的枚举器可能会产生带有值的枚举常量在同一枚举中重复其他值。”。我已将其放入答案中,但 stackoverflow.com/users/100297 将其删除,因为答案重复:stackoverflow.com/a/30916409/895245 我不认为这些问题是重复的。
  • 嗯,再想想,也许它们应该被标记为重复。

标签: c enums


【解决方案1】:

是的。

【讨论】:

    【解决方案2】:

    是的; C 并不特别关注枚举值。为什么你可能会这样做是另一个问题,除非有某些理由将发现数据包视为数据包。 (当其他人设计协议并且您希望尽可能地遵守他们的文档时,很可能会出现这种情况。)

    【讨论】:

      猜你喜欢
      • 2014-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 2016-03-05
      • 2019-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多