将类型分配给枚举标准 C 吗?



我见过这样的enum声明:

enum ProgrammingLanguage: unsigned char {
C = 0,
CPlusPlus,
Rust,
Java,
Javascript,
Python
};

这只为此类型分配一个字节。我的问题是,这是标准的C还是GCC扩展?如果我决定这样做,我是否需要担心可移植性?

这是标准的C

不,这不是 C 语言的一部分。

海湾合作委员会扩展?

不,这不是 C 语言的 GCC 扩展。

如果我决定这样做,我是否需要担心可移植性?

您需要担心使用任何 C 编译器编译此类代码。

这只是C++功能。

然后是macOS功能。在 C 文件中的 Xcode 中编译它有效

这是一个叮当的扩展。

附录A 6.7.2.2 将枚举定义为:

(6.7.2.2) enum-specifier:
enum identifier-opt { enumerator-list }
enum identifier-opt { enumerator-list,}
enum identifier

最新更新