global.h:
extern char ** map_stage;
global.c:此处出现错误C2099 - 初始化不是常数
char ** map_stage=create2DCharArray(map_height,map_length*map_length);
function create2DCharArray:
char ** create2DCharArray(int m, int n)
{
int i;
char** array;
array = (char**) malloc(n*sizeof(char*));
for (i = 0; i < n; i++)
array[i] = (char*) malloc(m*sizeof(char));
return array;
}
我怎样才能让它发挥作用? 它说“错误C2099”...... 我需要一个全局动态二维数组!
谢谢你们!答案 0 :(得分:3)
map_stage
是一个全局变量,因此它的初始值设定项应该是常量。您可以创建一个初始化函数来执行此操作。
/* global.c */
void init(void)
{
map_stage = create2DCharArray(map_height, map_length * map_length);
}
另请注意,您的free
无法访问。
答案 1 :(得分:2)
错误C2099表示“初始化程序不是常量”,这使我相信您已在全局范围内(即在任何函数之外)编写了map_stage
声明。这不是有效的C ++。
您可以在其中放置变量的定义,但是您需要通过函数调用对其进行初始化,因为初始化程序不是编译时常量。