Notation que je ne comprends pas dans le code source de Quake (C)

J’examinais le code de la GPL de Quake 1 et je suis tombé sur divers fichiers d’en-tête similaires, dont le but ou l’utilisation ne semble pas être compris. Ils ressemblent à des tables et sont structurés comme ceci

{1, 0}, {1, -1}, {1, -2}, {1, -3}, {1, -4}, {1, -5},[...] 

Sans rien avant ou après eux. Je comprends qu’ils définissent quelque chose, mais je n’ai jamais rencontré ce type de notation en C. Vous pouvez lire l’un des fichiers d’en-tête dont je parle ici .

Ma question est la suivante: quelles sont ces … choses? L’ASM me donne en réalité moins de problèmes que ce genre de choses.

Ce sont probablement des inclus multi-usage. Ils peuvent être utilisés comme suit:

 struct {int y; int y;} points[] = { #include  }; 

Le contenu d’un en-tête ne doit pas nécessairement être valide C; le préprocesseur C les insérera partout où la directive #include est trouvée, comme au milieu d’une initialisation de structure dans un autre fichier source. Tant qu’il est valide C au moment où il arrive au compilateur, c’est tout ce qui compte.

Ils peuvent être utilisés pour initialiser des tableaux.

Vous pourriez les utiliser comme ceci:

 int array[N][2] = #include  ;