3Fermer5
FarewellLe 25/01/2012 à 12:51
Suite. Je n'arrive pas à faire une affectation de structure. Voilà ce que j'ai :

Une structure Global qui contient un tableau de Module :struct Global { Module ModuleList [9]; };
La structure Module contient trois pointeurs de fonctions :typedef struct Module { Init_t Init; Manage_t Manage; Draw_t Draw; } Module;
Je voudrais affecter une structure Module à ModuleList [0] :global->ModuleList [0] = {InitIntro, ManageIntro, DrawIntro};
Mais ça ne compile pas :
main.c: In function '_main':
main.c:15: error: expected expression before '{' token

Donc deux solutions qui marchent :
- le cast :global->ModuleList [0] = (Module) {InitIntro, ManageIntro, DrawIntro};
- la variable intermédiaire :Module m = {InitIntro, ManageIntro, DrawIntro}; global->ModuleList [0] = m;

Les deux marchent. Le premier ne me plait guère, je peux caster {1} et ça marchera, donc il y a un risque d'erreur. Le second marche à merveille, mais est plus lourd en écriture.

1. Pourquoi ça ne pourrait pas marcher, ce que j'essaye ? La structure que je je veux affecter est bien du type attendu
2. Y a-t-il une solution plus élégante ou propre à ce que je veux faire ?

Merci d'avance.