- un enum è un "nome raggruppamento di costanti":
enum MyType_e {A, B, C};
- Queste costanti sono dichiarate nel campo di applicazione principale della enum cioè se l'enumerazione viene dichiarata in ambito di file, ed è senza nome, è equivalente a una serie di es
#define A 0
dichiarazioni - Il tipo sottostante per le costanti enum è sempre
int
cioèint var = A
è completamente legale, anche sevar
non è di tipoMyType_e
Allora cosa serve il nome enum servono?A cosa serve il nome enum?
EDIT Come per i commenti qui sotto, la mia comprensione di enumerazioni sembra essere abbastanza viziata. Un enum non ha nulla a che fare con le istruzioni #define.Enums are resolved at compile time e sono stati digitati.
Puoi indicare sezioni dello standard C da cui ricevi queste idee? C non ha spazi dei nomi (almeno nel senso che penso che tu ti stia riferendo a qui), e nemmeno il tipo sottostante per enum sempre int. O è questo da un nuovo standard C? –
@Anonimo: 6.7.2.2/3 dello standard C99 dice "Gli identificatori in una lista di elenchi sono dichiarati come costanti che hanno tipo' int' ... ". Questo è un po 'di confusione, tuttavia, poiché in seguito continua a dire: "Ogni tipo enumerato deve essere compatibile con' char', un tipo intero con segno o un tipo intero senza segno.La scelta del tipo è definita dall'implementazione ... . "Quindi le costanti stesse sono' int', ma il tipo 'enum' stesso potrebbe non esserlo. Per "namespace", penso che Vorac significasse "scope". – jamesdlin
@jamesdlin, Anonimo: ho modificato la domanda in modo che fosse meno corretta. Il tipo dipendente dall'implementazione per le enumerazioni è una novità per me. Abbastanza interessante. – Vorac