Une table n'est pas une structure.
Je sais pas comment est defini leveldata, mais si les champs poru tilemap et blockmap sont defini comme
const int *c'est valide.
Par contre des #defines si ce sont de simples valeurs je suis pas super fan perso, mais bon.
C'est du C ou du C++ ?
Si c'est du C je te recommande d'utiliser les named initializer, si c'est du C++, c'est con mais ca n'existe pas

L'idee des NI sont:
leveldata LevelData_01 =
{
.tileMap = tilemap,
.blockMap = blockmap,
.levelWidth = 42,
.levelHeight = 42,
.charX = 1,
.charY = 2,
};Ca permet de rendre le code plus clair, et tu peux aussi ignorer les champs que tu n'a pas besoin d'initialiser
Ceci dit, meme si c'est bien, const avec les pointeurs peux etre source de confusion, et de problemes.
Et a vrai dire peu de compilateur respectent const pour mettre les data dans une zone memoire RO.
Il peux l'etre, mais ce n'est pas obligatoire, c'est surtout pour faire gueuler le compilo si tu essaye de changer une variable qui est declare comme const. (c'est un probleme que j'ai avec un toolchain ou j’aimerais que ce qui soit declare en const soit definie dans une zone distincte du reste qui est dynamique, mais impossible de lui faire faire ce que je veux (besoin sur l'archi que les data const ne soit pas dans le meme segment que les data RW, enfin c'est surtout pour simplifier le loader, mais je disgress beaucoup la)

Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.