Problème de compilation

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,

Je suis entrain de faire un programme en C, le code source est assez grand donc je vais mettre ici seulement la portion qui pose problème :

case SDLK_RETURN:
		tab[k] = '\0';
		if(mind)
		{
			clock_t start;
			start = clock();
		}
		if(strcmp(tab, "123") == 0)
		{
			mind = 0;
			dec(dict);
			feuvert = 1;
			if((clock() - start) > 50)
			{
			    continuer = 0;
			}
		}

En fait, le compilateur me sort cette erreur :
main.c: In function ‘main’:
main.c:167:22: error: ‘start’ undeclared (first use in this function)
if((clock() - start) > 50)
^
main.c:167:22: note: each undeclared identifier is reported only once for each function it appears in

Apparemment "start" ne serait pas déclaré... Lorsque je retire le "if(mind)" et que je déclare start normalement, il n'y a plus d'erreur...
Mais dans mon programme on entre bien dans le premier if, vu que mind est un int qui vaut 1.
Alors pourquoi le compilateur me sort cette erreur ?

Merci pour vos réponses.

4 réponses

NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
"start" est déclarée sur la portée de "if(mind)" donc inaccessible dans le if suivant.
0
Utilisateur anonyme
 
Comment faire pour arranger cela...?
Pourtant si le compilateur acceptait de compiler, ce programme fonctionnerait.
0
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
Déclare ta variable dans la fonction au lieu du if ...
0
Sugel Messages postés 4076 Date d'inscription   Statut Membre Dernière intervention   727
 
Ce n'est pas possible, car tu peux ne pas rentrer dans le premier if, mais rentrer dans le second, auquel cas start n'est pas défini.

Si c'était le cas, alors le second if n'aurait pas de raison d'être !

comme le dit NHenry, tu fois définir ta variable avant le premier if.
Attention à bien l'initialiser avant de l'utiliser.

Avant d'écrire un message, pensez que nous sommes là par passion, et par espoir de vous la communiquer: Si c'est pas génial, ça !
0
paly2 Messages postés 254 Date d'inscription   Statut Membre Dernière intervention   25
 
En C, les variables sont déclarées par "bloc". Un bloc est une portion de code contenant plusieurs instructions (ou une, mais ça n'a pas d'intérêt d'utiliser un bloc quand on n'y met qu'une seule instruction) délimitée par des accolades. Tu peux faire des blocs n'importe où, pas forcément après des if des while, des case, des for etc.
Une variable déclarée dans un bloc est automatiquement détruite à la fin du bloc.

Donc, pour que ton code compile, il faut que tu déclares start dans un bloc supérieur à celui du if, donc par exemple juste avant le if.
0
Utilisateur anonyme
 
Merci à tous, c'est réglé (j'ai déclaré la variable avant le if).
0