Pollux :
PS : C++ rulez
struct Level { ...; const int xdim=20; } Ultra propre 
C99 rulez.
unsigned char (*mat)[ydim]; et même pas besoin que
ydim (ni
xdim) soit constant.
Quant au
##, regarde les sources de
ld-tigcc, il y en a pas mal (pour faire des templates en C).