【问题标题】:How can I convert enum in C++ code into C如何将 C++ 代码中的枚举转换为 C
【发布时间】:2019-03-26 02:27:26
【问题描述】:

我正在将 C++ 代码转换为 C 代码。这是需要转换的代码-

struct new{
   enum new_enum:uint8_t {
       head = 1,
       tail = 2,
       data = 3,
   };
};

如何转换?有人可以解释枚举中的 uint8_t 是什么吗?是否将所有变量分配给 uint8_t?

【问题讨论】:

  • converting C++ code to C code 很不清楚。是否要将枚举值转换为其基础整数值?

标签: c++ c class enums structure


【解决方案1】:

您提供的代码无法在 C++ 中编译,因为结构名称是 new

无论如何,您可以尝试删除:uint8_t。这会将强类型的enum 更改为标准的C。如果你幸运的话,一切都会奏效。如果在其他任何时候您使用了headtaildata,它将无法正常工作。你可以这样做:

enum new_enum {
    new_enum_head = 1,
    new_enum_tail = 2,
    new_enum_data = 3,
};

丑陋,但可能会奏效。当然,enum 必须脱离它所定义的struct。这又会引起很多悲伤,但可能性较小。

【讨论】:

    【解决方案2】:

    我正在将 C++ 代码转换为 C 代码。

    这似乎是一个奇怪的方向。

    这里没有直接转换。类型化枚举是 C++ 的一项功能。

    这里有一个类似的问题:How to emulate strongly typed enum in C?

    【讨论】:

      猜你喜欢
      • 2020-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 2012-08-12
      相关资源
      最近更新 更多