Recherche…


Introduction

Les commentaires sont utilisés pour indiquer quelque chose à la personne qui lit le code. Les commentaires sont traités comme un blanc par le compilateur et ne changent rien à la signification réelle du code. Deux syntaxes sont utilisées pour les commentaires dans C, l'original /* */ et le plus récent // . Certains systèmes de documentation utilisent des commentaires spécialement formatés pour aider à produire la documentation du code.

Syntaxe

  • /*...*/
  • //... (C99 et versions ultérieures uniquement)

/ * * / commentaires délimités

Un commentaire commence par une barre oblique suivie immédiatement d'un astérisque ( /* ) et se termine dès qu'un astérisque immédiatement suivi d'une barre oblique ( */ ) est rencontré. Tout ce qui se trouve entre ces combinaisons de caractères est un commentaire et est traité comme un espace vide (ignoré) par le compilateur.

/* this is a comment */

Le commentaire ci-dessus est un commentaire sur une seule ligne. Les commentaires de ce type /* peuvent couvrir plusieurs lignes, comme ceci:

/* this is a
multi-line
comment */

Bien que cela ne soit pas strictement nécessaire, une convention de style commune avec les commentaires multi-lignes consiste à placer des espaces et des astérisques sur les lignes après le premier, et /* et */ sur les nouvelles lignes, de sorte qu'ils soient tous alignés:

/* 
 * this is a
 * multi-line
 * comment
 */

Les astérisques supplémentaires n'ont aucun effet fonctionnel sur le commentaire car aucun d'entre eux n'a de barre oblique associée.

Ces /* type de commentaires peut être utilisé sur leur propre ligne, à la fin d'une ligne de code, ou même dans les lignes de code:

/* this comment is on its own line */
if (x && y) { /*this comment is at the end of a line */
    if ((complexCondition1) /* this comment is within a line of code */
            && (complexCondition2)) {
        /* this comment is within an if, on its own line */
    }
}

Les commentaires ne peuvent pas être imbriqués. C'est parce que tout /* ultérieur sera ignoré (dans le cadre du commentaire) et le premier */ atteint sera traité comme mettant fin au commentaire. Le commentaire dans l'exemple suivant ne fonctionnera pas :

/* outer comment, means this is ignored => /* attempted inner comment */ <= ends the comment, not this one => */

Pour commenter des blocs de code qui contiennent des commentaires de ce type, qui seraient autrement imbriqués, consultez l'exemple de commentaire utilisant le préprocesseur ci-dessous.

// commentaires délimités

C99

C99 a introduit l'utilisation des commentaires sur une seule ligne de style C ++. Ce type de commentaire commence par deux barres obliques et se termine à la fin d'une ligne:

// this is a comment

Ce type de commentaire n'autorise pas les commentaires sur plusieurs lignes, mais il est possible de créer un bloc de commentaires en ajoutant plusieurs commentaires sur une seule ligne l'un après l'autre:

// each of these lines are a single-line comment
// note how each must start with
// the double forward-slash

Ce type de commentaire peut être utilisé sur sa propre ligne ou à la fin d'une ligne de code. Cependant, comme ils sont exécutés à la fin de la ligne , ils ne peuvent pas être utilisés dans une ligne de code.

// this comment is on its own line
if (x && y) { // this comment is at the end of a line
    // this comment is within an if, on its own line
}

Commenter en utilisant le préprocesseur

De gros morceaux de code peuvent également être "commentés" en utilisant les directives de préprocesseur #if 0 et #endif . Ceci est utile lorsque le code contient des commentaires sur plusieurs lignes qui, autrement, ne seraient pas imbriqués.

#if 0 /* Starts the "comment", anything from here on is removed by preprocessor */ 

/* A large amount of code with multi-line comments */  
int foo()
{
    /* lots of code */
    ...

    /* ... some comment describing the if statement ... */
    if (someTest) {
        /* some more comments */
        return 1;
    }

    return 0;
}

#endif /* 0 */

/* code from here on is "uncommented" (included in compiled executable) */
... 

Piège possible dû aux trigraphes

C99

Lors de l'écriture de commentaires // délimités, il est possible de faire une erreur typographique qui affecte leur fonctionnement attendu. Si on tape:

int x = 20;  // Why did I do this??/

Le / à la fin était une faute de frappe mais maintenant sera interprété dans \ . C'est parce que le ??/ forme un trigraphe .

Le ??/ trigraphes est en fait une longhand pour la notation \ , qui est le symbole de continuation. Cela signifie que le compilateur pense que la ligne suivante est une continuation de la ligne en cours, c'est-à-dire une suite du commentaire, ce qui peut ne pas être ce qui est prévu.

int foo = 20; // Start at 20 ??/
int bar = 0;

// The following will cause a compilation error (undeclared variable 'bar')
// because 'int bar = 0;' is part of the comment on the preceding line
bar += foo;


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow