0

全球.h:

extern char ** map_stage;

global.c:此处出现错误 C2099 - Initialization is not a constant

char ** map_stage=create2DCharArray(map_height,map_length*map_length);

函数 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”......我需要一个全局动态二维数组!

感谢你们!

4

2 回答 2

3

map_stage是一个全局变量,所以它的初始化器应该是常量。您可以创建一个初始化函数来执行此操作。

/* global.c */

void init(void)
{
  map_stage = create2DCharArray(map_height, map_length * map_length);
}

另外,请注意您free的不可访问。

于 2013-01-28T18:22:19.807 回答
2

错误 C2099 的意思是“初始化程序不是常量”,这让我相信您已经map_stage在全局范围内(即,在任何函数之外)编写了该声明。那不是有效的 C++。

您可以将变量的定义放在那里,但您需要通过函数调用对其进行初始化,因为您的初始化程序不是编译时常量。

于 2013-01-28T18:23:02.827 回答