Namespaces
Variants

Comments

From cppreference.net
< c

Les commentaires servent de documentation intégrée au code. Lorsqu'ils sont insérés dans un programme, ils sont effectivement ignorés par le compilateur ; ils sont uniquement destinés à être utilisés comme notes par les humains qui lisent le code source.

Table des matières

Syntaxe

/* commentaire */ (1)
// commentaire (2) (depuis C99)
1) Souvent appelés commentaires "de style C" ou "multi-lignes".
2) Souvent appelés commentaires « style C++ » ou « sur une seule ligne ».

Tous les commentaires sont supprimés du programme lors de la phase de traduction 3 en remplaçant chaque commentaire par un unique caractère d'espacement.

Style C

Les commentaires de style C sont généralement utilisés pour commenter de grands blocs de texte ou de petits fragments de code ; cependant, ils peuvent être utilisés pour commenter des lignes individuelles. Pour insérer du texte en tant que commentaire de style C, entourez simplement le texte avec /* et */ . Les commentaires de style C indiquent au compilateur d'ignorer tout contenu entre /* et */ . Bien que cela ne fasse pas partie de la norme C, /** et **/ sont souvent utilisés pour indiquer des blocs de documentation ; ceci est légal car la deuxième astérisque est simplement traitée comme faisant partie du commentaire.

Sauf à l'intérieur d'une constante de caractère , d'un littéral de chaîne , ou d'un commentaire, les caractères /* introduisent un commentaire. Le contenu d'un tel commentaire est examiné uniquement pour identifier les caractères multioctets et pour trouver les caractères */ qui terminent le commentaire. Les commentaires de style C ne peuvent pas être imbriqués.

C++-style

Les commentaires de style C++ sont généralement utilisés pour commenter des lignes individuelles de texte ou de code ; cependant, ils peuvent être placés ensemble pour former des commentaires multilignes. Pour insérer du texte en tant que commentaire de style C++, il suffit de précéder le texte de // et de suivre le texte du caractère de nouvelle ligne. Les commentaires de style C++ indiquent au compilateur d'ignorer tout contenu entre // et une nouvelle ligne.

Sauf à l'intérieur d'une constante de caractère , d'un littéral de chaîne ou d'un commentaire, les caractères // introduisent un commentaire qui inclut tous les caractères multioctets jusqu'au caractère de nouvelle ligne suivant, mais sans l'inclure. Le contenu d'un tel commentaire est examiné uniquement pour identifier les caractères multioctets et trouver le caractère de nouvelle ligne qui termine le commentaire. Les commentaires de style C++ peuvent être imbriqués :

//  y = f(x);   // invoke algorithm

Un commentaire de style C peut apparaître dans un commentaire de style C++ :

//  y = f(x);   /* invoke algorithm */

Un commentaire de style C++ peut apparaître dans un commentaire de style C ; ceci est un mécanisme pour exclure un petit bloc de code source :

/*
    y = f(x);   // invoke algorithms
    z = g(x);
*/
(depuis C99)

Notes

Parce que les commentaires sont supprimés avant l'étape du préprocesseur, une macro ne peut pas être utilisée pour former un commentaire et un commentaire de style C non terminé ne déborde pas d'un fichier inclus via #include.

/* Une tentative d'utiliser une macro pour former un commentaire. */
/* Mais, un espace remplace les caractères "//".       */
#ifndef DEBUG
    #define PRINTF //
#else
    #define PRINTF printf
#endif
...  
PRINTF("Erreur dans le fichier %s à la ligne %i\n", __FILE__, __LINE__);
**Notes sur la traduction :** - Les commentaires en français ont été traduits - Le texte dans la chaîne `printf` a été traduit ("Error in file" → "Erreur dans le fichier", "at line" → "à la ligne") - Toutes les balises HTML, attributs et code C++ (macros, fonctions, directives) sont conservés intacts - La structure et la mise en forme originales sont préservées

En plus du commentaire, d'autres mécanismes utilisés pour l'exclusion du code source sont :

#if 0
    puts("ceci ne sera pas compilé");
    /* aucun conflit avec les commentaires de style C */
    // aucun conflit avec les commentaires de style C++
#endif

et

if(0) {
    puts("ce code sera compilé mais ne sera pas exécuté");
    /* aucun conflit avec les commentaires de style C */
    // aucun conflit avec les commentaires de style C++
}

L'introduction des commentaires // en C99 a constitué un changement cassant dans certaines circonstances rares :

a = b //*diviseur:*/ c
+ d; /* C89 compile a = b / c + d;
        C99 compile a = b + d; */

Exemple

#include <stdio.h>
/*
C-style comments can contain
multiple lines.
*/
/* Or, just one line. */
// C++-style comments can comment one line.
// Or, they can
// be strung together.
int main(void)
{
  // The below code won't be run
  // puts("Hello");
  // The below code will be run
  puts("World");
  // A note regarding backslash + newline.
  // Despite belonging to translation phase 2 (vs phase 3 for comments),
  // '\' still determines which portion of the source code is considered
  // as 'comments':
  // This comment will be promoted to the next line \
  puts("Won't be run"); // may issue a warning "multi-line comment"
  puts("Hello, again");
}

Sortie :

World
Hello, again

Références

  • Norme C17 (ISO/CEI 9899:2018) :
  • 6.4.9 Commentaires (p: 54)
  • Norme C11 (ISO/CEI 9899:2011) :
  • 6.4.9 Commentaires (p: 75)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 6.4.9 Commentaires (p: 66)
  • Norme C89/C90 (ISO/CEI 9899:1990) :
  • 3.1.9 Commentaires

Voir aussi

Documentation C++ pour Commentaires