【问题标题】:Enums defined with array constants用数组常量定义的枚举
【发布时间】:2016-10-28 18:34:35
【问题描述】:

可以用数组定义枚举常量吗?像这样:

enum myEnum
{
    abc = {12, 34, 56};
    def = {-12, -13, -14};
};

【问题讨论】:

  • 这意味着什么?如果您告诉我们您想要做什么,我们或许可以向您展示如何操作(使用 enum 以外的其他方式)。
  • 我需要一种方法来存储常量信息的“元组”并能够对其进行比较。在这种情况下,我使用数据类型及其大小。示例:long TYPE_NUMERIC_UNSIGNED_LONG_INT[] = {50, 0, 4294967295, 1};

标签: c arrays enums constants


【解决方案1】:

这是不可能的。枚举常量必须是整数类型。

来自C standard 的第 6.7.2.2 节:

2 定义枚举常量值的表达式应为具有值的整数常量表达式 可表示为int

3 枚举器列表中的标识符被声明为类型为int的常量,并且可以出现在任何位置 允许。带有= 的枚举器定义了它的枚举 常量作为常量表达式的值。如果第一个 枚举器没有=,其枚举常量的值为0。每个 没有= 的后续枚举器定义了它的枚举常量 作为加 1 得到的常数表达式的值 为前一个枚举常量的值。 (指某东西的用途 带有= 的枚举器可能会生成具有以下值的枚举常量 在同一枚举中重复其他值。) 枚举也称为其成员。

【讨论】:

    【解决方案2】:

    没有。

    枚举包含一组命名的整数常量值。

    (C2011,6.2.5/16)

    枚举常量的值是由实现选择的整数类型。它们不能有实类型、指针类型或聚合类型(包括数组类型)。为枚举常量声明的(可选)值必须是整数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多