w jakich sytuacjach należy użyć anonimowego wyliczenia?

W c i c ++enum można zdefiniować za pomocą tagu

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

lub bez tagu

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

Jeśli został zdefiniowany z tagiem, ma to sensswitch instrukcje w c i c ++:

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

będzie produkować-Wswitch ostrzeżenie, jeśli zostanie skompilowane za pomocą gcc lub g ++.

Ma sens w deklaracjach funkcji i inicjalizacji zmiennych w c ++:

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

Będzie produkować-fpermissive błąd przy kompilacji za pomocą g ++.

Oba typy z tagiem lub bez mogą być używane jako jeden plik#define makro bez parametrów.

aktualizacja

może być używany jako jeden plik#define makro bez parametrów

oznaczało: Zamiast pisać#define MAX 1000 w pliku i dodanie MAX do użytku globalnegoenum { MAX=1000 } tylko w zakresie plików

A co z anonimowymi wyliczeniami, znalazłem tylko jeden przypadek użycia: definicja jaktypedef enum { a,b,c } some_t; sprawia, że ​​działa jak enum z tagiem

Pytanie:

jeśli jeszcze nie opisałem wszystkich rozsądnych przypadków użycia, to po co używać anonimowych wyliczeń?

questionAnswers(3)

yourAnswerToTheQuestion