Определение препроцессора, такое как ROW_CNT
, заменяет любые экземпляры идентификатора в вашем коде значением, которое он определил как. Поэтому, как только препроцессор расширит ваши макросы, ваш код будет выглядеть так:
unsigned int volume[8;][24;][2;];
Как видите, точка с запятой включается после 8, 24 и 2, поскольку именно так вы определили ROW_CNT
, COLUMN_COUNT
и FIRST_COUNT
, и это явно недопустимый синтаксис C.
Удалите точку с запятой в конце ваших #define
s, и код скомпилируется.