Ok, je comprends ce qui est probablement laid que diable, mais je ne peux pas comprendre pourquoi je ne peux pas utiliser TILES_X
, TILES_Y
ou TILES_TOTAL
comme longueurs de tableau global, GCC pleurer à ce sujet étant « modifié Inégalement à la portée du fichier ».Variablement modifié, mais err, comment?
/* 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))
Qui devrait évaluer à une constante, non? Je veux dire, il n'y a rien, rien de variable là-dedans. Si j'essaie de définir une variable avec un initialiseur, cela m'indique à quel point il est modifié de façon variable. Je ne vois pas comment. Il y a d'autres articles sur la même erreur, mais il a toujours été résolu en utilisant un enum ou define au lieu d'un const int.
vous pouvez afficher le code que le compilateur se plaint en fait de? – Mat