将类型分配给枚举标准 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