à une VIRGULE près...
Fermé
loicjun
Messages postés
2
Date d'inscription
jeudi 26 novembre 2015
Statut
Membre
Dernière intervention
27 novembre 2015
-
Modifié par baladur13 le 26/11/2015 à 15:52
loicjun Messages postés 2 Date d'inscription jeudi 26 novembre 2015 Statut Membre Dernière intervention 27 novembre 2015 - 27 nov. 2015 à 16:39
loicjun Messages postés 2 Date d'inscription jeudi 26 novembre 2015 Statut Membre Dernière intervention 27 novembre 2015 - 27 nov. 2015 à 16:39
1 réponse
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
Modifié par [Dal] le 26/11/2015 à 16:27
Modifié par [Dal] le 26/11/2015 à 16:27
Salut loicjun,
C'est une mauvaise idée de définir une macro avec un nom aussi court que "C" et tu viens d'en faire l'expérience.
tu utilises un define où une définis une macro nommée "C" correspondant à 100000
or, tu fais ceci avec ce "C" :
- tu définis une fonction dont le prototype est
- cette même fonction retourne un calcul
- tu appelles cette fonction en faisant
Moralité : change le nom de la macro de C en quelque chose de plus long et explicite et que tu ne risques pas de confondre avec autre chose, et vérifie ton code pour savoir si tu entends utiliser la constante définie par la macro, ou faire autre chose.
Je n'ai pas regardé le reste du code, penche toi sur chaque message d'erreur et warning, et rectifie le code.
Note que c'est aussi une mauvaise idée, pour des raisons similaires d'absence de maîtrise du scope, de définir des variables globales et de plus avec des noms aussi courts et usuels que tes
Dal
C'est une mauvaise idée de définir une macro avec un nom aussi court que "C" et tu viens d'en faire l'expérience.
tu utilises un define où une définis une macro nommée "C" correspondant à 100000
or, tu fais ceci avec ce "C" :
- tu définis une fonction dont le prototype est
double rapp (long N,long D,int C): le préprocesseur remplacera
int Cpar
int 100000, ce qui est un nom de variable illicite en langage C
- cette même fonction retourne un calcul
return C/(N*D);où on ne voit pas bien si tu parles de 100000 ou de ce que tu passes en 3ème argument (le préprocesseur ne se posera pas la question et remplacera le "C" par 100000)
- tu appelles cette fonction en faisant
rapp(C,N,D);, où le "C" est remplacé par 100000 dans le premier argument
Moralité : change le nom de la macro de C en quelque chose de plus long et explicite et que tu ne risques pas de confondre avec autre chose, et vérifie ton code pour savoir si tu entends utiliser la constante définie par la macro, ou faire autre chose.
Je n'ai pas regardé le reste du code, penche toi sur chaque message d'erreur et warning, et rectifie le code.
Note que c'est aussi une mauvaise idée, pour des raisons similaires d'absence de maîtrise du scope, de définir des variables globales et de plus avec des noms aussi courts et usuels que tes
long i,n,d,m,t,r,s,u,v,D,N;
Dal
27 nov. 2015 à 16:39