Problème de compilation
Résolu
Utilisateur anonyme
-
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 :
En fait, le compilateur me sort cette erreur :
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.
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.
A voir également:
- Problème de compilation
- Breach compilation c'est quoi - Guide
- Compilation error: expected unqualified-id before '{' token ✓ - Forum C++
- Erreur de compilation projet ou bibliothèque introuvable - Forum Excel
- Erreur de compilation : Projet ou bibliothèque introuvable - Forum VB / VBA
- Must declare a named package because this compilation unit is associated to the named module - Forum Java
4 réponses
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 !
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 !
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.
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.
Pourtant si le compilateur acceptait de compiler, ce programme fonctionnerait.