2012-03-19 5 views

ответ

4

Снять точки с запятой на #define.

Директивы #define обрабатываются компиляцией preprocessing stage, что касается замены текста. Таким образом, всякий раз, когда препроцессор выполняет замену текста, программа становится

unsigned int volume[8;][24;][2;]; 

, который не является действительным C.

3
#define ROW_CNT 8; 
#define COLUMN_CNT 24; 
#define FIRST_COLUMN 2; 

должен быть

#define ROW_CNT 8 
#define COLUMN_CNT 24 
#define FIRST_COLUMN 2 

должна запятая не использоваться для #define

1

Препроцессор определен ион, такой как ROW_CNT, заменяет любые экземпляры идентификатора в вашем коде значением, которое оно определено как являющееся. Поэтому, как только препроцессор расширил свои макросы, ваш код будет выглядеть следующим образом:

unsigned int volume[8;][24;][2;]; 

Как вы можете видеть, точка с запятой входит после 8, 24 и 2, так что, как вы определили ROW_CNT, COLUMN_COUNT и FIRST_COUNT быть, и это явно недействительный синтаксис C.

Удалите точки с запятой от конца вашего #define и код скомпилируется.