Esiste un numero massimo di elementi consentiti enum
in C++?limite elemento enum
(questione è stata sollevata dalla risposta alla mia precedente interrogazione sulla defines)
Esiste un numero massimo di elementi consentiti enum
in C++?limite elemento enum
(questione è stata sollevata dalla risposta alla mia precedente interrogazione sulla defines)
Non c'è nessun massimo o minimo indicato, dipende dalla vostra applicazione. Tuttavia, si noti che l'allegato B recita:
- Costanti di enumerazione in una singola enumerazione [4096].
Come raccomandazione. Ma questa è strettamente una raccomandazione, non un requisito.
Crap, ho davvero bisogno del membro 4294967297th !! – Skurmedel
O consentire meno perché il compilatore si arresta in modo anomalo perché non ha RAM sufficiente per conservare tutti questi simboli in memoria :-) – jdehaan
Ovviamente, se l'enumeratore 4.294.967.297 viene dichiarato come 'nome = 0', è possibile continuare, gli enumeratori solo non ho più valori univoci :-P –
La lingua non specifica alcuna cosa del genere. Tuttavia, i compilatori possono avere limiti. Dovresti controllare i tuoi documenti del compilatore per quello.
Nel caso di C un enum è solo un set migliore di #define
s. Qualsiasi cosa significa in dettaglio dalla norma C: un valore di enumerazione è di un tipo
che è compatibile con un implementazione definita una delle tipi integrali.
La mia ipotesi è che il C++ ha una definizione simile e C++ 0x aggiunge qualche possibilità di battitura. Tutto in uno che significherebbe la quantità che si può avere di loro è teoricamente limitata dal tipo sottostante (qualunque sia lo int
la maggior parte delle volte, suppongo, lo standard C non sia abbastanza chiaro riguardo a questo). Ma prima di poter impostare milioni di simboli il tuo compilatore si bloccherà o probabilmente esaurirà la memoria.
IMO, se hai bisogno di chiedere, è meglio rivedere il tuo design; ma penso che potrebbe essere correlato alla dimensione di un "int". M. – Max
@Max: C'è una base per pensare che? Specificare tutti gli elementi con nome in un enum è meglio che distribuirlo su più file per il bene di compatibilità –
Che compilatore stai usando? Il numero di valori consentiti in un 'enum 'varia da implementazione a implementazione. – bta