w jakich sytuacjach należy użyć anonimowego wyliczenia?
W c i c ++enum
można zdefiniować za pomocą tagu
enum e_smth {
smth_one,
smth_two,
smth_err
};
lub bez tagu
enum {
smth_one,
smth_two,
smth_err
};
Jeśli został zdefiniowany z tagiem, ma to sensswitch
instrukcje w c i c ++:
e_smth some_var;
....//do some stuff with some_var
switch (some_var)
{
case smth_one:
break;
case smth_two:
break;
}
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 ++:
e_smth var;
var=99;
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
jeśli jeszcze nie opisałem wszystkich rozsądnych przypadków użycia, to po co używać anonimowych wyliczeń?