è la dimensione di un enum sempre uguale tra diversi compilatori (gcc, visual c e altri?). Cioè, sizeof() di un enum specifico dà gli stessi valori con ogni compilatore che segue gli standard C/C++?Dimensioni dell'enumerazione in byte di diversi compilatori
risposta
No.
Sia C e C++ un enum avranno una dimensione tale che tutti i valori possono essere rappresentati ed essere compatibile con un tipo intero. Diversi compilatori possono utilizzare algoritmi diversi per scegliere il tipo (se non è specificato da un altro standard come un ABI chiaramente definito). (C++ 11 permette di specificare il tipo sottostante con una nuova sintassi)
Non necessariamente: C consente al tipo di valori di enumerazione di essere scelti dal compilatore, proprio come, secondo la tua risposta, fa C++. Vedi sezione 6.7.2.2/4 in [lo standard C] (http://www.open-std.org/JTC1/sc22/wg14/www/docs/n1256.pdf). – pmg
Inoltre, in C++ 0x è possibile utilizzare la nuova * enum class * per specificare il tipo intero che verrà utilizzato per eseguire il backup dei valori di enumerazione. –
@ pmg, grazie. Non so dove l'ho preso. Ho verificato che fosse già il caso in C90. – AProgrammer
"Ogni tipo enumerato sono compatibili con char, un tipo intero firmata , o un tipo intero senza segno. La scelta del tipo è definito dall'implementazione) ma deve essere in grado di rappresentare i valori di tutti i membri dell'enumerazione. "
"... Un'implementazione può ritardare la scelta di quale tipo intero è finché non sono state visualizzate tutte le costanti di enumerazione."
ISO/IEC 9899: 1999 (E) p.105
Così abbiamo solo limiti superiori per sizeof (enum). Sulla maggior parte dei sistemi ho avuto sizeof (enum) = 4, ma il compilatore STM ha reso sizeof (enum) = 1/2/4 a seconda dei valori scritti in enum
Modifica: sembra che tu possa impostare uno dei valori del tuo enum in max int per assicurare che il compilatore scelga intero come dimensione enum.
- 1. Diversi operatori di fusione utilizzate da diversi compilatori
- 2. Mixare librerie da diversi compilatori C++
- 3. attributi di funzione pure/const in diversi compilatori
- 4. Implementazioni di libreria standard C++ in diversi compilatori
- 5. Come istruire Makefile per utilizzare diversi compilatori
- 6. Dimensioni della classe in byte
- 7. Dimensioni di un array di byte golang
- 8. Calc utf-8 dimensioni stringa in byte?
- 9. Dimensioni Enum * in pratica *
- 10. Avvisi che verranno costantemente attivati su diversi compilatori?
- 11. Java converte l'immagine in problemi di dimensioni dell'array di byte
- 12. Array di byte di analisi contenente diversi tipi di dati
- 13. Esempio compilatori
- 14. Come ottenere dimensioni di un'immagine che si svolge in un array di byte in KB
- 15. Dimensioni di memoria consentite di 262144 byte esaurite (tentativo di allocare 24576 byte)
- 16. Lettura di byte di dimensioni "integer" da un array char *.
- 17. Dimensioni di memoria consentite di 134217728 byte esauriti
- 18. Come ottenere dimensioni e dimensioni di sfaccettatura identiche in diversi grafici ggplot2 a più facce?
- 19. Le implementazioni di ereditarietà virtuale C++ di diversi compilatori non sono compatibili?
- 20. Limite dimensioni indice 900 byte in lunghezza carattere
- 21. Java - Converti dimensioni leggibili da lettura in byte
- 22. JavaScript - Ottieni dimensioni in byte da HTML img src
- 23. Leggere un singolo byte dal file di grandi dimensioni
- 24. Come applicare diverse opzioni del compilatore per diversi compilatori in cmake?
- 25. Compilatori di tipi come funzioni
- 26. La classe template C++ si comporta in modo diverso per diversi compilatori
- 27. corsi per compilatori autodidatti/buoni libri introduttivi per compilatori?
- 28. Diverse dimensioni dei file di registrazione da diversi iPad
- 29. Bordo CSS frastagliato con bordi di dimensioni/colore diversi
- 30. Dimensioni carattere diverse su dispositivi diversi nella stessa classe di dimensioni
E la firma può anche differire. –