好吧,我知道这可能是丑陋的,但我不明白为什么我不能使用TILES_X
,TILES_Y
或TILES_TOTAL
作为全局数组长度,GCC哭着说它是“在文件范围可变修改”。可变地修改,但是错误,怎么样?
/* How many points should be in each tile? */
/* NOTE: MUST BE POWER OF TWO */
#define TILE_WIDTH 32
#define TILE_HEIGHT TILE_WIDTH
#define TILE_AREA (TILE_WIDTH * TILE_HEIGHT)
/* How far should the origin of each tile be spaced? */
#define TILE_OFFSET_X TILE_WIDTH
#define TILE_OFFSET_Y (TILE_HEIGHT * 0.866f)
/* Relative to the origin, where does the tile really end? */
#define TILE_MIN_X 0.0f
#define TILE_MIN_Y 0.0f
#define TILE_MAX_X (TILE_OFFSET_X + 0.5f)
#define TILE_MAX_Y (TILE_OFFSET_Y + 0.5f)
/* How many tiles should be cached offscreen? */
#define TILE_BLEED 2
#define CAMERA_WIDTH 256.0f
#define CAMERA_HEIGHT 192.0f
#define TILES_X ((size_t) ((float) ((CAMERA_WIDTH * 2.0f) + (TILE_BLEED * (TILE_WIDTH + TILE_WIDTH)))/(float) TILE_OFFSET_X))
#define TILES_Y ((size_t) ((float) ((CAMERA_HEIGHT * 2.0f) + (TILE_BLEED * (TILE_HEIGHT + TILE_HEIGHT)))/(float) TILE_OFFSET_Y))
#define TILES_TOTAL (TILES_X * TILES_Y)
TILES_X expands to:
((size_t) ((float) ((256.0f * 2.0f) + (2 * (32 + 32)))/(float) 32))
这应该评估一个常数,对不对?我的意思是,没有什么,没有什么变数。如果我尝试使用这个初始化器来定义一个变量,它会再次声明它是如何可变地修改的。我不知道如何。还有一些关于相同错误的帖子,但它总是使用枚举或者定义来代替const int来解决。
你可以张贴的编译器实际上抱怨的代码划分的? – Mat 2011-06-12 12:46:34