Bonjour!
Voilà, je sais, c'est censé être un indice d'une erreur bête mais je viens de rencontrer:
error: called object ‘commande’ is not a function or function pointer
J'implore votre pitié, je ne trouve pas l'erreur bête, pouvez-vous m'aider, Ô nobles développeurs?
J'ai épluché mon code ainsi que des pages web de personnes ayant eu une erreur similaire, je ne vois pas d'où la mienne peut bien venir...
Il s'agit du code d'un shell UNIX recréé à la main à partir de rien...
L'erreur en entier:
et mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 copp@b032-26:~$ projet.c: In function main: projet.c:142:22: error: called object commande is not a function or function pointer commande = commande(); ^ projet.c:138:6: note: declared here int commande = 0;
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 int commande(){ parsing(); switch(symboleP){ int pid; case 0:// \n case 1:// ; pid = fork(); if(pid > 0){ int valeurWait = wait(&status);// Cette instruction suspend le processus père jusqu'à ce qu'un des processus fils se termine, elle retourne le pid du processus qui s'est terminé et l'état du processus terminé est placé à l'adresse &status. if(WIFEXITED(status) == 0){ return 0; } }else if(pid == 0){ execvp(respP[0],respP); }else{ printf("erreur de pid"); } break; case 2: // & //*com[i++]=0;*// pid=fork(); /* Mettre un if pour que le pere observe le fils le exec sera dans le fils */ if(pid>0){ /* if (background==0) { int valeurWait = wait(&status); } else { /* A la fin de l execution normale du fils, on retourne vers le processsus pere le return 0 permet d'afficher le prompt Dauphine> conformement au switch du main.c */ //i=0; return 1; } else { return 7; } break; case 3: // < if(pid>0){ /* if (background==0) { int valeurWait = wait(&status); } else { /* A la fin de l execution normale du fils, on retourne vers le processsus pere le return 0 permet d'afficher le prompt Dauphine> conformement au switch du main.c */ //i=0; return 1; } else { return 7; } break; } return 0; } int main(){ int commande = 0; printf("Dauphine>"); fflush(stdout); //Pour vider le buffer et forcer l'execution de la commande mais je n'en sais pas plus..! while(1){ commande = commande(); switch(commande){ case 7: // EOF return 0; case 0: // CR printf("Dauphine>"); fflush(stdout); break; } fflush(stdout); } return 0; }
Partager