Bonjour,
Merci à toi, lecteur, de voir mon problème : j'espère que tu pourras y répondre
À l'intérieur d'une structure, j'ai un double pointeur, représentant un tableau de taille inconnue (enfin, presque) de pointeurs.
Toutes les structures doivent être constantes pour être correctement positionnées dans la ROM (et non la RAM).
J'ai donc le type suivant pour ma structure :
Après avoir correctement initialisé mes 13 anim différents, je créé un tableau de ces anim_frame, puis je le met dans ma structure définie plus haut.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 typedef struct anim_animation { uint16_t nframes; screen_pos_t extent; const anim_frame_t ** frames; } anim_animation_t;
Je précise que ma structure anim_animation était avant définie non pas comme un double pointeur, mais comme un tableau de taille fixe vers pointeurs.
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 const anim_frame_t * anim_array = { &anim_1_frame, &anim_2_frame, &anim_3_frame, &anim_4_frame, &anim_5_frame, &anim_6_frame, &anim_7_frame, &anim_8_frame, &anim_9_frame, &anim_10_frame, &anim_11_frame, &anim_12_frame, &anim_13_frame, }; const anim_animation_t big_animation = {13, 45, &anim_array};
Alors qu'avant mes modifications, j'arrivais à afficher toutes mes frames, maintenant le code bloque sur le premier.
De plus, j'ai à la compilation, un warning me disant ceci :
Ceci pour chaque ligne correspondant à anim_2_frame jusqu'à anim_13_frame : pas la 1 (évidemmentmodule_menu.c:476: warning: excess elements in scalar initializer
module_menu.c:476: warning: (near initialization for 'anim_array'))
Que se passe-t-il donc ?
Merci
Partager