static const int
в C объявляет переменную типа int
, значение которой можно предположить (при оптимизации) не изменять. Он не объявляет константу, в отличие от C ++.
Если вам нужны целочисленные константы в простом C, вы можете либо использовать макросы, как предлагает предыдущий ответ, либо использовать enum
. Обратите внимание, что вам разрешено использовать анонимные enum
s; например,
enum {
EBD_HEADER_SIZE = sizeof (EBD_HEAD),
EBD_TRAILER_SIZE = sizeof (EBD_TRAIL),
RMH_ENCODED_MSG_OVERHEAD = sizeof (EBD_HEAD) + sizeof (EBD_TRAIL)
};
Обратите внимание, что использование enum
для этой цели не без проблем; таким способом можно объявить только константы целочисленного типа, и если вы решите использовать именованный enum
(либо через тег, либо через typedef
), то стоит отметить, что некоторые компиляторы будут выбирать разные размеры или выравнивания для вашего типа в соответствии с к числу и значениям его постоянных членов.
Очевидно, что использование #define
также имеет несколько недостатков, не в последнюю очередь известные проблемы случайной множественной оценки побочных эффектов и приоритета операторов.