0

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アレイが必要です!

君たちありがとう!

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 に答える