Bonsoir,
J'essaie de faire un pointeur de fonction contenu dans une structure dans le cadre d'un projet OpenGL. Pour le pointeur de fonction je n'ai aucun soucis (voir operation()). Cependant, lorsque je définis un pointeur de fonction dans une structure, quand je veux l'initialiser avec une fonction, alors cela provoque une segmentation fault, mais le résultat est tout de même affiché (voir operation2()).
Voici un exemple simplifié en dessous :
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 #include <stdio.h> typedef int (*Func)(int, int); struct Str { Func func; }; typedef struct Str StructFunc; int somme(int i, int j) { return i+j; } int multiplication(int i, int j) { return i*j; } int quotient(int i, int j) { return i/j; } int modulo(int i, int j) { return i%j; } void operation(Func *func) { printf("%i\n", (*(func))(3,5)); } void operation2(StructFunc *structFunc) { printf("%i\n", (*(structFunc->func))(3,-4)); } int main() { Func f; f = &somme; operation(&f); StructFunc *sF; sF->func = &multiplication; operation2(sF); return 0; }Comment je peux faire pour éviter cette erreur?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 8 -12 Erreur de segmentation
Note : Je dois respecter le prototype de operation2()
Merci pour votre aide.
Partager