Является ли присвоение типа стандартному перечислению C? - PullRequest
2 голосов
/ 18 июня 2020

Я видел enum объявления, подобные этому:

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

Это выделяет только один байт для этого типа. Мой вопрос: это стандартное расширение C или расширение G CC? Стоит ли мне беспокоиться о переносимости, если я решу это сделать?

Ответы [ 2 ]

5 голосов
/ 18 июня 2020

это стандарт C

Нет, это не часть C языка.

расширение G CC?

Нет, это не расширение G CC на языке C.

Нужно ли мне беспокоиться о переносимости, если я решу это сделать?

Вам нужно вообще беспокоиться о компиляции такого кода с помощью любого C компилятора.

Это исключительно функция C ++.

Тогда это функция macOS. Компиляция его в Xcode в файл C работает

Это расширение clang .

1 голос
/ 18 июня 2020

Приложение A 6.7.2.2 определяет перечисление как:

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