Bonjour, j'ai 2 structures S1 et S2. J'ai 3 fonctions :
Est-ce que je peux faire ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int mafct(void * p, int flag); int fonction0(S1 * p); int fonction1(S2 * p);
ou bien dois-je obligatoirement caster mon pointeur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 int mafct(void * p, int flag) { if(flag == 0) { return fonction0(p); } else { return fonction1(p); } }
Et ai-je le droit de faire ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 int mafct(void * p, int flag) { if(flag == 0) { S1 * pS1 = (S1 *) p; return fonction0(pS1); } else { S2 * pS2 = (S2 *) p; return fonction1(pS2); } }
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 int mafct(void * p, int flag) { void * ptr = NULL; if(flag == 0) { ptr = (S1 *) p; return fonction0(ptr); } else { ptr = (S2 *) p; return fonction1(ptr); } }
Pour ma part, je fais la 1e méthode (sans le cast). Ces méthodes peuvent-elles engendrer des problèmes, comportements indéterminés etc ?
Merci d'avance
Partager