【发布时间】:2015-10-06 08:19:56
【问题描述】:
我已经像这样声明了一个二维全局数组变量:
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)
【问题讨论】:
-
请提供一个适当的最小示例,其他人可以尝试编译。现在还不清楚定义在哪里以及是否有其他因素影响问题。
-
您需要为您的数组及其嵌套数组分配内存。
-
grid_2d_array[ROWS][COLUMNS] =指定数组的一个元素(不存在)。尝试删除[ROWS][COLUMNS]和use grid_2d_array = { /*your stuff goes here*/};。 -
您有什么理由不使用
std::array<std::array<int>>吗? -
@tobi303 好问题。这是 C 还是 C++(不能两者兼有)?