Я объявил глобальную переменную массива 2D так:Невозможно инициализировать массив 2D
int grid_2d_array[ROWS][COLUMNS];
затем в main
Я инициализировать его с жестко закодированных значений:
grid_2d_array[ROWS][COLUMNS] = {{5, 7, 2, 8, 3, 6, 1, 4},
....
{1, 6, 3, 2, 4, 8, 9, 5}
};
Пример:
#include <stdio.h>
#define ROWS 9
#define COLUMNS 9
/* Global variable. */
int grid_2d_array[ROWS][COLUMNS];
int main()
{
/* Initialze the 2D array. */
grid_2d_array[ROWS][COLUMNS] = {{5, 7, 2, 8, 3, 6, 1, 4},
....
{1, 6, 3, 2, 4, 8, 9, 5}
};
return 0;
}
Но когда я пытаюсь компиляции исходного кода, GCC выдает следующую ошибку:
source_file.c: In function ‘main’:
source_file.c:45:34: error: expected expression before ‘{’ token
grid_2d_array[ROWS][COLUMNS] = {{5, 7, 2, 8, 3, 6, 1, 4},
^
Я не уверен, почему GCC не признает grid_2d_array
в качестве глобальной переменной.
Проблема исчезает, если я переопределяю вышеупомянутую переменную в main
.
Я бегу версии GCC: gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04)
Просьба привести надлежащий минимальный пример этого, который другие могут попытаться скомпилировать. Теперь неясно, где это определение, и если что-то еще влияет на проблему. –
Вам необходимо выделить память для вашего массива и его вложенных массивов. – vdolez
'grid_2d_array [ROWS] [COLUMNS] =' задает элемент (который не существует) массива. Попробуйте удалить '[ROWS] [COLUMNS]' и просто 'use grid_2d_array = {/ * ваш материал идет сюда * /};'. –