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 de documentation

Lorsqu’on écrit du code qui a nécessité du temps et de l’effort, puis qu’on se rend compte que ce code n’est plus utile, mais qu’on pense qu’il sera à nouveau utile dans le futur, afin de s’épargner du temps et de l’effort dans le futur, on le garde “au chaud” – entre commentaires. Dans ce cas le commentaire sert à “désactiver” du code : le commentaire contient du code C prêt à l’emploi.

Un autre cas d’usage du commentaire est de contenir une explication de ce que fait le code : c’est à dire de documenter le code afin d’aider à sa compréhension.

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(),
}

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;

}

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 */