【发布时间】:2017-09-07 12:21:28
【问题描述】:
在一个库中,我遇到了一个奇怪的构造,它用作枚举:
typedef struct SetControl
{
const static uint16_t RC_MODE_ERROR;
const static uint16_t RELEASE_CONTROL_SUCCESS;
const static uint16_t OBTAIN_CONTROL_SUCCESS;
const static uint16_t OBTAIN_CONTROL_IN_PROGRESS;
const static uint16_t RELEASE_CONTROL_IN_PROGRESS;
const static uint16_t RC_NEED_MODE_F;
const static uint16_t RC_NEED_MODE_P;
const static uint16_t IOC_OBTAIN_CONTROL_ERROR;
} SetControl;
尽管RC_MODE_ERROR 等于 0,RELEASE_CONTROL_SUCCESS 等于 1,但成员并未在任何地方初始化,以此类推。我知道,因为我已经用 printf 记录了它。到目前为止,我还没有看到类似的东西。为什么它甚至可以工作(我认为默认情况下值将由随机数据或 0 初始化)?这比标准enum 有什么附加价值吗?我将不胜感激。
【问题讨论】:
-
@EdChum 但这并未声明为枚举。这些是结构的成员
-
这些值必须在某个地方以某种方式定义。继续挖掘!
-
它们看起来像宏,它们可能是在某处定义的宏,是否有一些
#define ...在某处 -
你确定没有不设置这些静态成员的cpp文件吗?除非经过编码,否则您所看到的不应发生。
-
@EdChum 没关系,我想我们有时都会这样做
标签: c++ struct enums initialization