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.