Размер массива на языке C89 / 90 должен быть задан целочисленным константным выражением (в общем случае также верно для C99). Объект const int
в C не является константным выражением , поэтому его нельзя использовать для указания размера массива. Примечание: это одно существенное различие между C и C ++.
В языке C термин константа относится к буквальным константам, т. Е. 5
, 10.2
, 0xFF
, 'a'
и т. Д. константы , если быть точным). Объект const int
, опять же, не является константой в C и не может использоваться для построения константных выражений.
Если вы хотите предварительно объявить именованную константу для использования в качестве размера массива в C, вы должны использовать либо #define
, либо enum
. То же самое относится к меткам регистра, размерам битовых полей и любому другому контексту, требующему постоянного выражения.
Подробнее см. .