Bonsoir,
je voudrai comprendre s'il vous plait la raison de ce warning qui me suit partout dans mon programme:
possible use of "x" before definition in function main
Merci.
Bonsoir,
je voudrai comprendre s'il vous plait la raison de ce warning qui me suit partout dans mon programme:
possible use of "x" before definition in function main
Merci.
A premiere vue, je dirais c'est parce que "x" est utilisé avant qu'il soit initialisé.
Ca sera plus claire si on pouvais avoir plus de details, comme le code et les messages de warning complets
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int i,j; j=i; printf("%d\n",j);
Merci, alors voilà mon code (pas encore terminé)
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133 #include <stdio.h> #include <stdlib.h> #include <conio.h> struct liste_event { char type; float temps; struct liste_event *next; }; struct liste_event *tete; /*fonction d'insertion*/ void insertion(char x, float y) { struct liste_event *pt1; struct liste_event *pt2; struct liste_event *event; printf ("saisie des informations du nouvel evennement"); printf ("/n entrez le type de l'evennement"); scanf ("%s", &x); printf ("entrez le temps d'execution du nouvel evennement"); scanf ("%f",&y); pt1=tete; event=(struct liste_event*)malloc(sizeof(struct liste_event)); event->type=x; event->temps=y; if (pt1==NULL){ /*insertion au debut*/ event->next=pt1; pt1=event; } else { pt2=tete->next; while (pt2->next!=NULL) { if(pt2->temps < event->temps) { pt1=pt2; pt2=pt2->next; } else { event->next=pt2; pt1=event; } } /*insertion en fin de liste*/ { pt1->next=event; event->next=NULL; } } } struct liste_event *extraire(void) { struct liste_event *p; struct liste_event *q; struct liste_event *event; p=tete; if (p==NULL) printf("liste vide"); else { tete=p->next; event=p; printf("l'evennement retir est:"); return(event); } } void affichage(void) { struct liste_event *courant; courant=tete; while (courant->next != NULL) { printf("/n le type de l'evennement est: %s", courant->type); printf("/n le temps de l'evennement est: %f", courant->temps); courant=courant->next; } } int menu(void) { int choix; clrscr(); gotoxy(10,2); printf("**********GESTION DE LA LISTE**********"); printf("/n 1-introduire un nouvel evennement"); printf("/n 2-Extraire le premier evennement"); printf("/n 3-Afficher le contenu de la liste des evennements"); printf("/n 4-EXIT"); printf("/n Faites votre choix"); scanf("%d", &choix); getch(); return(choix); } main() { int i; float val; char s; i=menu(); while (i != 4) { switch (i) { case (1):insertion(s,val); break; case (2):extraire(); break; case (3): affichage(); break; default: printf("\n choix inexistant"); } } }
Ton code a changer entre temps on dirait .... Le warning parlait d'une variable x dans la fonction main alors que dans ton code il n'y pas de variable x.
C'est quoi la fonction clrscr()? Mon compilo ne la reconnait pas.
Je ne vois pas de problème avec 'x'...
Ton code commenté et partiellement corrigé :
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 Project : Forums Compiler : GNU GCC Compiler (called directly) Directory : C:\dev\forums\ -------------------------------------------------------------------------------- Switching to target: default Compiling: main.c main.c: In function `extraire': main.c:69: warning: unused variable `q' main.c:82: warning: control reaches end of non-void function main.c: In function `affichage': main.c:89: warning: format argument is not a pointer (arg 2) main.c: In function `menu': main.c:99: warning: implicit declaration of function `clrscr' main.c:100: warning: implicit declaration of function `gotoxy' main.c: At top level: main.c:113: warning: return type defaults to `int' main.c:113: warning: function declaration isn't a prototype main.c: In function `main': main.c:133: warning: control reaches end of non-void function main.c:115: warning: 'val' might be used uninitialized in this function main.c:116: warning: 's' might be used uninitialized in this function Linking console executable: console.exe Process terminated with status 0 (0 minutes, 7 seconds) 0 errors, 10 warnings
Il reste :
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165 /* -ed- réindentation */ #include <stdio.h> #include <stdlib.h> /* -ed- a moins que tu compiles avec un vieux Borland C... */ #include <conio2.h> struct liste_event { char type; float temps; struct liste_event *next; }; struct liste_event *tete; /*fonction d'insertion*/ void insertion (char x, float y) { struct liste_event *pt1; struct liste_event *pt2; struct liste_event *event; printf ("saisie des informations du nouvel evennement"); printf ("/n entrez le type de l'evennement"); scanf ("%s", &x); printf ("entrez le temps d'execution du nouvel evennement"); scanf ("%f", &y); pt1 = tete; event = (struct liste_event *) malloc (sizeof (struct liste_event)); event->type = x; event->temps = y; if (pt1 == NULL) { /*insertion au debut*/ event->next = pt1; pt1 = event; } else { pt2 = tete->next; while (pt2->next != NULL) { if (pt2->temps < event->temps) { pt1 = pt2; pt2 = pt2->next; } else { event->next = pt2; pt1 = event; } } /*insertion en fin de liste*/ { pt1->next = event; event->next = NULL; } } } struct liste_event *extraire (void) { struct liste_event *p; /* -ed- non utilisée struct liste_event *q; */ struct liste_event *event; p = tete; if (p == NULL) printf ("liste vide"); /* -ed- BUG ! Ne retourne rien... */ else { tete = p->next; event = p; printf ("l'evennement retir est:"); return (event); } } void affichage (void) { struct liste_event *courant; courant = tete; while (courant->next != NULL) { /* -ed- printf ("/n le type de l'evennement est: %s", courant->type); Pour un char, c'est "%d" ou "%c"... */ printf ("/n le type de l'evennement est: %c", courant->type); printf ("/n le temps de l'evennement est: %f", courant->temps); courant = courant->next; } } int menu (void) { int choix; clrscr (); gotoxy (10, 2); printf ("**********GESTION DE LA LISTE**********"); printf ("/n 1-introduire un nouvel evennement"); printf ("/n 2-Extraire le premier evennement"); printf ("/n 3-Afficher le contenu de la liste des evennements"); printf ("/n 4-EXIT"); printf ("/n Faites votre choix"); scanf ("%d", &choix); getch (); return (choix); } /* -ed- main () mauvais interface. */ int main (void) { /* -ed- valeurs indéterminees. */ int i; float val; char s; i = menu (); while (i != 4) { switch (i) { case (1): /* -ed- BUG : passage de deux valeurs indéterminées a la fonction. Le comportement est indéterminé. Tout peut arriver. */ insertion (s, val); break; case (2): extraire (); break; case (3): affichage (); break; default: printf ("\n choix inexistant"); } } /* -ed- main() retourne une valeur au système. 0 = OK */ return 0; }
Mais tu devrais avoir les informations nécessaires à la correction en lisant mes commentaires.
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 Project : Forums Compiler : GNU GCC Compiler (called directly) Directory : C:\dev\forums\ -------------------------------------------------------------------------------- Switching to target: default Compiling: main.c main.c: In function `extraire': main.c:91: warning: control reaches end of non-void function main.c: In function `main': main.c:136: warning: 'val' might be used uninitialized in this function main.c:137: warning: 's' might be used uninitialized in this function Linking console executable: console.exe Process terminated with status 0 (0 minutes, 1 seconds) 0 errors, 3 warnings
Ahem... http://emmanuel-delahaye.developpez....tm#cfg_compilo
J'ai complété mon message...
Partager