в каких ситуациях следует использовать анонимный enum?

В обоих с и с ++enum может быть определен с тегом

<code>enum e_smth {
    smth_one,
    smth_two,
    smth_err
};
</code>

или без тега

<code>enum {
    smth_one,
    smth_two,
    smth_err
};
</code>

Если это было определено с тегом, это имеет смысл вswitch операторы в c и c ++:

<code>e_smth some_var;
....//do some stuff with some_var
switch (some_var)
{
case smth_one:
break;
case smth_two:
break;
}
</code>

будет производить-Wswitch предупреждение, если это будет скомпилировано с gcc или g ++.

Это имеет смысл в объявлениях функций и инициализации переменных в c ++:

<code>e_smth var;
var=99;
</code>

Будет производить-fpermissive ошибка, если скомпилирована с g ++.

Оба типа с тегом или без могут быть использованы как один файл#define макрос без параметров.

update

could be used as one file #define macro without parameters

означало: вместо того, чтобы писать#define MAX 1000 в файле и добавление MAX для глобального использованияenum { MAX=1000 } просто в области видимости файла

А что касается анонимных перечислений, я обнаружил только один вариант использования: определение какtypedef enum { a,b,c } some_t; заставляет это работать как перечисление с тегом

Question:

если я еще не описал все разумные варианты использования, зачем использовать анонимные перечисления?

Ответы на вопрос(3)

Ваш ответ на вопрос