Является ли sizeof (enum) == sizeof (int), всегда?
- Или он зависит от компилятора?
- Неправильно ли говорить, что компилятор оптимизирован для длины слов (выравнивание по памяти), т.е. y int является размером слова в конкретном компиляторе? Означает ли это, что нет штрафа за обработку, если я использую перечисления, поскольку они будут выровнены по словам?
- Разве не лучше, если я поместил все коды возврата в перечисление, так как я, очевидно, не беспокоюсь о значениях, которые он получает, а только имена при проверке типов возврата. Если это так, то #DEFINE будет лучше, так как он сохранит память.
Какова обычная практика? Если мне придется переносить эти типы возвращаемых данных по сети, и некоторая обработка должна выполняться с другой стороны, что бы вы предпочли перечисления /# define/const ints.
РЕДАКТИРОВАТЬ - просто проверять сеть, поскольку complier не символически связывает макросы, как люди отлаживают тогда, сравнивают целочисленное значение с файлом заголовка?
Из ответов - я добавляю эту строку ниже, поскольку мне нужны разъяснения -
"Таким образом, он определяется реализацией и sizeof (enum) может быть равным sizeof (char), то есть 1.
- Не означает ли это, что компилятор проверяет диапазон значений в перечислениях, а затем назначает память. Я так не думаю, конечно, я не знаю. Может кто-нибудь, пожалуйста, объясните мне, что такое "может быть".