首页 > 解决方案 > C中未初始化的枚举

问题描述

我的不幸任务是将一些用 C 编写的代码带入 C++。

我在具有以下形式的结构中遇到了一个未初始化的枚举。

enum theEnum {
  A = 1,
  B = 2,
  C = 3,
}

struct theCStruct{
  enum theEnum enuminstance;
}

theCStruct structInstance;

我知道在 C++ 中这将是未定义的,但是当我发现 C 结构中未初始化的变量默认为 0(至少对于整数)而不是未定义时。

在这种情况下,枚举的默认值在 C 中是什么?

标签: c

解决方案


C 结构中未初始化的变量默认为 0(至少对于整数)而不是未定义的。

这是一个神话,除非struct实例具有static_Thread_local存储持续时间或在全局范围内。

这两种语言在这方面是相同的。

根据经验,不要port,而是interop。C 在通用操作系统上有非常好的 API。


推荐阅读