Bonjour,
je voulais savoir s'il était possible de définir un tableau grâce à un #define.
Imaginons que je veuille, avec la sdl2, créer 4 textures contenant des textes.
Pour cela, j'ai créé un tableau avec les 4 messages textes. Et je crée mes textures en faisant appel à chaque case l'une après l'autre.
Voici ce que je fais et cela marche très bien
Dans un fichier de déclaration
Dans un autre fichier, dans une fonction d'initialisation (en ayant definit Images Jeton)Code:
1
2
3
4
5
6
7
8
9
10 typedef struct Images Images; struct Images { SDL_Surface *Icone; SDL_Texture *Image[NbImagesMax];//tableau de NbImagesMax=4 images SDL_Texture *Message[NbMessagesMax];//tableau de NbMessagesMax=2 messages SDL_Rect DimensionImage[NbImagesMax]; //pour chaque image, dimensionner w et h SDL_Rect DimensionMessage[NbMessagesMax]; //pour chaque texte, dimensionner w et h }; #define NbMessagesMax 4//car il y a 4 messages
Comme j'aimerais garder et adapter les messages et le nombre de messages de cette fonction d'initialisation pour un autre projet, j'aimerai avoir quelque chose du type (histoire de ne pas à avoir à modifier l'adaptation à plusieurs endroits du prog) :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 InitialisationDesMessages(...) char *ListeMessage[] = {"message1","message2", "message3","message4"};//liste des textes a charger [...] for (i=0; i<NbMessagesMax; i++)// chargement des autres images + transparence { Jeton->Message[i]=ChargementMessages(Renderer,ListeMessage[i],i,police); if(Jeton->Message[i]==NULL)//si pb de chargement { [...gestion si erreur...] } else { SDL_QueryTexture(Jeton->Message[i], NULL, NULL, &(Jeton->DimensionMessage[i]).w, &(Jeton->DimensionMessage[i]).h); } } fprintf(fichierErreur, "Nombre de messages correctement chargés : %d \n", i);//il y en a i messages [...] }
Or ceci ne semble pas fonctionner.Code:
1
2
3
4
5 #define NbMessagesMax 4//car il y a 4 messages #define ListeMessage[1] =message1; #define ListeMessage[2] =message2; #define ListeMessage[3] =message3; #define ListeMessage[4] =message4;
Quelqu'un aurait la gentillesse de m'aider?
Cordialement