Является ли sizeof (enum) == sizeof (int), всегда?Является ли sizeof (enum) == sizeof (int), всегда?
- Или это зависит от компилятора?
- Неправильно ли говорить, что компилятор оптимизирован для длины слов (выравнивание по памяти), т. Е. Y int является размером слова в конкретном компиляторе? Означает ли это, что нет штрафа за обработку, если я использую перечисления, поскольку они будут выровнены по слову?
- Не лучше, если я поместил все коды возврата в перечисление, так как я, очевидно, не беспокоюсь о его значениях, а только имена при проверке типов возврата. Если это так, то #DEFINE лучше, так как это спасет память.
Что такое обычная практика? Если мне нужно переносить эти типы возвращаемых данных по сети, и некоторая обработка должна быть выполнена на другом конце, что бы вы предпочли перечислять/# define/const ints.
EDIT - просто проверка на сеть, поскольку complier не символически связывают макросы, как люди отлаживают тогда, сравнивают целочисленное значение с файлом заголовка?
С ответами -Я Добавив эту строку ниже, как мне нужно clarifications-
«Так что определяется реализацией, и SizeOf (перечисление) может быть равна SizeOf (Char) , то есть 1. "
- Не означает ли это, что компилятор проверяет для диапазона значений в перечислениях, а затем назначить память. Я так не думаю, конечно, я не знаю. Может кто-нибудь, пожалуйста, объясните мне, что такое «может быть».
Проверил: http://stackoverflow.com/ вопросы/366017/what-is-the-size-of-an-enum-in-c И это: http://bytes.com/groups/cpp/135139-sizeof-en um-sizeof-int – Macarse
Из сети на каком-то форуме: «Я думал, что перечисление должно быть таким же маленьким, сколько необходимо для хранения всех его значений, в данном случае 1 байт». Это правда. –
Спасибо всем, я изучаю несколько разумных сомнений, которые, я думаю, помогут вам лучше понять концепцию. –