将类型分配给枚举标准 C?
Is assigning a type to an enum standard C?
我见过 enum
这样的声明:
enum ProgrammingLanguage: unsigned char {
C = 0,
CPlusPlus,
Rust,
Java,
Javascript,
Python
};
这只为该类型分配一个字节。我的问题是,这是标准 C 还是 GCC 扩展?如果我决定这样做,我需要担心便携性吗?
附录 A 6.7.2.2 将枚举定义为:
(6.7.2.2) enum-specifier:
enum identifier-opt { enumerator-list }
enum identifier-opt { enumerator-list,}
enum identifier
is this standard C
不,这不是 C 语言的一部分。
a GCC extension?
不,这不是 C 语言的 GCC 扩展。
Do I need to worry about portability if I decide to do this?
您根本不需要担心使用任何 C 编译器编译此类代码。
这完全是 C++ 功能。
Then it is a macOS feature. Compiling it in Xcode in a C file works
这是一个clang extension。
我见过 enum
这样的声明:
enum ProgrammingLanguage: unsigned char {
C = 0,
CPlusPlus,
Rust,
Java,
Javascript,
Python
};
这只为该类型分配一个字节。我的问题是,这是标准 C 还是 GCC 扩展?如果我决定这样做,我需要担心便携性吗?
附录 A 6.7.2.2 将枚举定义为:
(6.7.2.2) enum-specifier:
enum identifier-opt { enumerator-list }
enum identifier-opt { enumerator-list,}
enum identifier
is this standard C
不,这不是 C 语言的一部分。
a GCC extension?
不,这不是 C 语言的 GCC 扩展。
Do I need to worry about portability if I decide to do this?
您根本不需要担心使用任何 C 编译器编译此类代码。
这完全是 C++ 功能。
Then it is a macOS feature. Compiling it in Xcode in a C file works
这是一个clang extension。