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
jeśli jeszcze nie opisałem wszystkich rozsądnych przypadków użycia, to po co używać anonimowych wyliczeń?