[resolu]question sur les erreurs de compilation
Bonjour a toutes et a tous,
voila en fait, j'ai juste une question d'ordre general
Quand on cree une variable que l'on utilise pas, le compilateur met un warning ce qui est plutot sympa...
Par contre, quand on met:
et que l'on ne s'en sert pas, il ne dit rien...
Y a t'il une raison?
Merci
PS je sais pas si j'ai poste au bon endroi la...
Re: question sur les erreurs de compilation
Citation:
Envoyé par vince3320
voila en fait, j'ai juste une question d'ordre general
Quand on cree une variable que l'on utilise pas, le compilateur met un warning ce qui est plutot sympa...
Par contre, quand on met:
et que l'on ne s'en sert pas, il ne dit rien...
Le langage C n'exige pas ce genre de comportement. Tout compilateur est libre d'ajouter tout message qu'il juge utile. C'est ce qu'on appelle la Qualité d'Implémentation (QoI). Personnellement, je trouve ce warning utile.
Un préprocesseur pourrait effectivement détecter ce genre de 'non utilisation'. Personnellement, je n'en connais pas.
Un bon moyen de vérifier si des macros sont utiles ou non est de les supprimer temporairement et de recompiler. Si ça casse, c'est qu'elles sont utilisées. Evidemment, c'est plus facile si la définition des macros est centralisée:
Code:
1 2 3 4 5
|
#if 0
#define A 4
#define B "xxx"
#endif |
Sinon, un outil de recherche comme grep (ou la recherche multi-fichiers de UltraEdit) peut aider.
Je rappelle aussi qu'une macro peut avoir un comportement 'local'. (Ce qui permet le recyclage de son identificateur). Très utile quand on utilise les macros pour générer du code répétitif...
Code:
1 2 3 4 5 6 7
|
#define MY_MACRO_LOCALE xxx
f()
{
... MY_MACRO_LOCALE ...
}
#undef MY_MACRO_LOCALE |
ou même:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
f()
{
#define MY_MACRO_LOCALE xxx
... MY_MACRO_LOCALE ...
#undef MY_MACRO_LOCALE
...
#define MY_MACRO_LOCALE yyy
... MY_MACRO_LOCALE ...
#undef MY_MACRO_LOCALE
} |