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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Dans un autre fichier, dans une fonction d'initialisation (en ayant definit Images Jeton)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
[...]
}
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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;
Or ceci ne semble pas fonctionner.
Quelqu'un aurait la gentillesse de m'aider?
Cordialement