好吧,我知道這可能是醜陋的,但我不明白爲什麼我不能使用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