Commentaires
Il est possible d’insérer des commentaires dans un code source. Un commentaire est ignoré par le compilateur et n’a pas besoin de respecter la syntaxe du C.
Il peut contenir du code source, un texte explicatif, ou n’importe quoi d’autre.
Deux syntaxes de commentaires existent en C : le
commentaire multiligne /* */ et sur une seule
ligne //.
Commentaires multiligne
Le commentaire multiligne permet de commenter plusieurs lignes de code :
int main() {
int toto;
/*
int tata;
int titi;
*/
}
Il n’est pas passible d’imbriquer deux commentaires
multilignes : le commentaire multiligne s’arrête au
premier */ rencontré :
int main() {
int toto;
/*
int tata;
/* int titi; // ici s'arrête le commentaire */
*/
}
Si votre souhait est de commenter plusieurs lignes de code,
sans vous soucier de commentaires deja existants dans
le code que vous voulez commenter,
une alternative est d’utiliser une
directive de préprocesseur
#if 0 / #endif
int main() {
int toto;
#if 0
int tata;
/*int titi; */
#endif
}
Commentaires sur une seule ligne
Une autre syntaxe, empruntée du C++, et disponible depuis
le
C ANSI
, est le commentaire sur
une seule ligne //. Il se termine au premier caractère
« saut de ligne » (\n) rencontré.
int main() {
int toto;
//int tata; // ce commentaire s'arrête à la ligne
int titi;
}
Commentaires de documentation
Un commentaire peut expliquer ce que fait le code lorsqu’il n’est pas évident au premier coup d’oeil.
Pour faire la différence entre les commentaire de documentation
du code commenté temporairement, de nombreux EDI
reconnaissant la convention qui consiste à rajouter
deux étoiles après la barre oblique ouvrante (/**)
pour signifier que le commentaire sert de documentation
et non à désactiver du code. Les
EDI
affichent
du code de documentation avec une fonte ou une couleur
différente des commentaires “normaux”.
Vu que les EDI proposent des raccourcis claviers pour commenter rapidement des lignes ou des blocs de code, rajouter une étoile supplémentaire ainsi permet la distinction entre commentaires volontaires et commentaires automatiques.
De la même facon, un commentaire mono ligne avec
trois barres obliques /// se distingue d’un commentaire
mono ligne automatique // et signifie qu’il a été ajouté
à la main à des fins de documentation.
/**
* Cette fonction ne fait rien
* Notez que ce bloc de commentaire commence avec /**
*/
int ma_fonction() {
return 42;
/* return 0; */ /** Ici il s'agit de code commenté,
donc on ne met que une seule étoile */
}
int main() {
/** Cet appel est uniquement à but démonstratif */
ma_fonction(),
}
Commentaire de mise en sommeil de code
On peut mettre du code en commentaire si on pense en avoir besoin dans le futur mais pas l’utilité immédiate.
Un effet
néfaste de procéder ainsi est que un tel code peut devenir
périmé dans le temps, lorsqu’on change la signature
des fonctions, en supprime, etc. Si on revient plusieurs années
après dessus et qu’on décommente le code on peut se retrouver
sur des appels de fonctions qu’on a oublié et qu’on doit retrouver
dans des versions archivées du code source, perdre du temps
à mettre le code à jour. Si au lieu de commenter le code
on le met dans un bloc if(0), on est forcé de mettre
à jour le code qui s’y trouve pour que programme compile
si on change la signature d’une fonction,
et évite d’avoir à faire avec du code complètement obsolète
dans le futur.
Phase de compilation
Lors de la compilation , les commentaires sont remplacés par une unique espace, avant que le préprocesseur n’intervienne.
On ne peut donc pas creer de commentaires avec le preprocesseur, et le preprocesseur n’a pas d’influence sur les commentaires.
#define END_COM */
/* END_COM // ce commentaire disparait avant le
preprocessus, donc la directive "END_COM" ne termine
pas ce commentaire. */
// le preprocesseur ne verra pas la ligne ci dessous
/* #define IGNORED */