La dimensione di (enum) == sizeof (int), sempre?La dimensione di (enum) == sizeof (int), sempre?
- O è dipendente dal compilatore?
- È sbagliato dire che il compilatore è ottimizzato per le lunghezze delle parole (allineamento della memoria), cioè y int è la dimensione della parola su un particolare compilatore? Significa che non c'è penalità di elaborazione se uso le enumerazioni, dato che sarebbero allineate alla parola?
- Non è meglio se inserisco tutti i codici di ritorno in una enumerazione, poiché chiaramente non mi preoccupo dei valori che ottiene, solo dei nomi mentre controllo i tipi di ritorno. Se questo è il caso, #DEFINE sarà migliore in quanto farebbe risparmiare memoria.
Qual è la prassi abituale? Se devo trasportare questi tipi di ritorno su una rete e un po 'di elaborazione deve essere eseguita all'altra estremità, quale preferiresti enumeri/# definisce/constati.
MODIFICA - Basta controllare su rete, poiché il compilatore non collega simbolicamente le macro, come fanno le persone eseguono il debug quindi, confronta il valore intero con il file di intestazione?
dalle risposte -I sono l'aggiunta di questa linea di seguito, come ho bisogno clarifications-
"Così è definito dall'implementazione, e sizeof (enum) potrebbe essere pari a sizeof (char) , cioè 1. "
- Non significa che i controlli del compilatore per la gamma di valori in enumerazioni, e quindi assegnare la memoria. Io non la penso così, certo che non lo so. Qualcuno può spiegarmi che cosa è "potrebbe essere".
Check: http://stackoverflow.com/ domande/366017/what-is-the-size-of-an-enum-in-c E questo: http://bytes.com/groups/cpp/135139-sizeof-en um-sizeof-int – Macarse
Dalla rete su alcuni forum, "pensavo che un enum doveva essere piccolo quanto necessario per contenere tutti i suoi valori, in questo caso 1 byte." È vero. –
Grazie a tutti sto imparando pochi dubbi ragionevoli, che penso possano sicuramente aiutare a migliorare il concetto. –