Вообще то я уже длительное время занимаюсь разработкой just for fun, но осенило только сейчас.
Сначала я собирался прямо написать на багзилу gcc про добавление этой фичи как расширения, но погуглив, понял, что это может быть уже реализовано, и доклад будет просто не нужен.
В некоторых других постах нашел упоминание про ENUM_ENUMERATION_TYPE, но гугление по этому имени не дало результатов.
Наверное плохо искал, т.к. смог найти только упоминание на msdn (а это еще и С++, не считая оффтопика).
Указание типа данных enum (детский такой вопрос...)
Модератор: Модераторы разделов
-
- Сообщения: 180
- ОС: Gentoo / Calculate
Re: Указание типа данных enum
Как всегда, только задам публичный вопрос, как внезапно нахожу ссылку с ответом (Enumerated type на вики).
Похоже, enum class - стандартная фича C++, и в C такого нет (разве что используя glib и G_TYPE_ENUM).
Похоже, enum class - стандартная фича C++, и в C такого нет (разве что используя glib и G_TYPE_ENUM).
-
- Модератор
- Сообщения: 20977
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Указание типа данных enum
А зачем?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: Указание типа данных enum
Слоупок замечание, enum class — это фича C++11, а, значит, может не везде быть. И к тому же enum class — это перечисление в пространстве имён. Задание типа — это несвязная фича, т.е. допустимы:
Bizdelnick
enum class — для более серьёзного контроля типов (нельзя неявно преобразовывать в int и наоборот), а также, чтобы избежать дублирования названия перечислений, например:
Без class будет ошибка, Center — два раза, а так — нет. Раньше изобретали что-то вроде:
Что немного странно смотрится в C++ при наличии пространст имён.
enum X : type используется для точного задания размера хранимых данных.
Код: Выделить всё
enum class A {a, b, c};
enum X : unsigned char {x, y, z};
enum class Q : unsigned short {q, w, e};
Bizdelnick
enum class — для более серьёзного контроля типов (нельзя неявно преобразовывать в int и наоборот), а также, чтобы избежать дублирования названия перечислений, например:
Код: Выделить всё
enum class HorizontalAlignment {Left, Center, Right};
enum class VerticalAlignment {Top, Center, Bottom};
Без class будет ошибка, Center — два раза, а так — нет. Раньше изобретали что-то вроде:
Код: Выделить всё
enum class HorizontalAlignment {HorizontalAlignment_Left, HorizontalAlignment_Center, HorizontalAlignment_Right};
enum class VerticalAlignment {VerticalAlignment_Top, VerticalAlignment_Center, VerticalAlignment_Bottom};
Что немного странно смотрится в C++ при наличии пространст имён.
enum X : type используется для точного задания размера хранимых данных.