Problème de compilation

Résolu/Fermé
Utilisateur anonyme - 25 juin 2016 à 20:23
 Utilisateur anonyme - 26 juin 2016 à 16:42
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 15172 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 décembre 2024 350
25 juin 2016 à 20:30
"start" est déclarée sur la portée de "if(mind)" donc inaccessible dans le if suivant.
0
Comment faire pour arranger cela...?
Pourtant si le compilateur acceptait de compiler, ce programme fonctionnerait.
0
NHenry Messages postés 15172 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 décembre 2024 350
Modifié par NHenry le 25/06/2016 à 20:37
Déclare ta variable dans la fonction au lieu du if ...
0
Sugel Messages postés 4076 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 19 juin 2017 725
Modifié par Sugel le 25/06/2016 à 23:02
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 vendredi 29 août 2014 Statut Membre Dernière intervention 15 février 2018 25
26 juin 2016 à 11:43
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
26 juin 2016 à 16:42
Merci à tous, c'est réglé (j'ai déclaré la variable avant le if).
0