[英]how to create a global 2d array in C
global.h:
extern char ** map_stage;
global.c: 这里出现错误C2099-初始化不是常量
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” ...我需要一个全局动态2D数组!
感谢大伙们!
map_stage
是全局变量,因此其初始值设定项应为常数。 您可以创建一个初始化函数来执行此操作。
/* global.c */
void init(void)
{
map_stage = create2DCharArray(map_height, map_length * map_length);
}
另外,请注意,您的free
是无法获得的。
错误C2099的意思是“初始化程序不是常量”,这使我相信您已经在全局范围内(即,在任何函数之外)编写了map_stage
声明。 那不是有效的C ++。
您可以在此处放置变量的定义,但是您需要通过函数调用对其进行初始化,因为初始化器不是编译时间常数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.