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:

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;
et mon code:

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;
}