Namensräume
Varianten
Aktionen

Kommentare

Von cppreference.com
< c

Kommentare dienen als eine Art In-Code-Dokumentation. Wenn sie in ein Programm eingefügt werden, werden sie vom Compiler effektiv ignoriert; sie sind ausschließlich zur Verwendung als Notizen für Menschen gedacht, die den Quellcode lesen.

Inhalt

[bearbeiten] Syntax

/* Kommentar */ (1)
// Kommentar (2) (seit C99)
1) Oft bekannt als "C-Stil" oder "mehrzeilige" Kommentare.
2) Oft bekannt als "C++-Stil" oder "einzeilige" Kommentare.

Alle Kommentare werden zur Übersetzungsphase 3 aus dem Programm entfernt, indem jeder Kommentar durch ein einzelnes Leerzeichen ersetzt wird.

[bearbeiten] C-Stil

C-Stil-Kommentare werden normalerweise verwendet, um große Textblöcke oder kleine Codefragmente zu kommentieren; sie können jedoch auch zur Kommentierung einzelner Zeilen verwendet werden. Um Text als C-Stil-Kommentar einzufügen, umgeben Sie den Text einfach mit /* und */. C-Stil-Kommentare weisen den Compiler an, allen Inhalt zwischen /* und */ zu ignorieren. Obwohl nicht Teil des C-Standards, werden /** und **/ oft verwendet, um Dokumentationsblöcke anzuzeigen; dies ist zulässig, da der zweite Stern einfach als Teil des Kommentars behandelt wird.

Außerhalb einer Zeichenkonstanten, einem String-Literal oder einem Kommentar leiten die Zeichen /* einen Kommentar ein. Der Inhalt eines solchen Kommentars wird nur untersucht, um Mehrbyte-Zeichen zu identifizieren und die Zeichen */ zu finden, die den Kommentar beenden. C-Stil-Kommentare können nicht verschachtelt werden.

C++-Stil

C++-Stil-Kommentare werden normalerweise verwendet, um einzelne Text- oder Codezeilen zu kommentieren; sie können jedoch zusammengefügt werden, um mehrzeilige Kommentare zu bilden. Um Text als C++-Stil-Kommentar einzufügen, stellen Sie dem Text einfach // voran und lassen Sie dem Text das Zeilenumbruchzeichen folgen. C++-Stil-Kommentare weisen den Compiler an, allen Inhalt zwischen // und einem Zeilenumbruch zu ignorieren.

Außerhalb einer Zeichenkonstanten, einem String-Literal oder einem Kommentar leiten die Zeichen // einen Kommentar ein, der alle Mehrbyte-Zeichen bis zum nächsten Zeilenumbruchzeichen, dieses jedoch nicht einschließt. Der Inhalt eines solchen Kommentars wird nur untersucht, um Mehrbyte-Zeichen zu identifizieren und das Zeilenumbruchzeichen zu finden, das den Kommentar beendet. C++-Stil-Kommentare können verschachtelt werden.

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

Ein C-Stil-Kommentar kann innerhalb eines C++-Stil-Kommentars erscheinen

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

Ein C++-Stil-Kommentar kann innerhalb eines C-Stil-Kommentars erscheinen; dies ist ein Mechanismus zum Ausschließen eines kleinen Blocks von Quellcode

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

[bearbeiten] Hinweise

Da Kommentare vor der Präprozessorphase entfernt werden, kann ein Makro nicht verwendet werden, um einen Kommentar zu bilden, und ein nicht beendeter C-Stil-Kommentar läuft nicht über eine #include'd-Datei hinaus.

/* An attempt to use a macro to form a comment. */
/* But, a space replaces characters "//".       */
#ifndef DEBUG
    #define PRINTF //
#else
    #define PRINTF printf
#endif
...  
PRINTF("Error in file %s at line %i\n", __FILE__, __LINE__);

Neben dem Auskommentieren sind weitere Mechanismen zur Ausschließung von Quellcode:

#if 0
    puts("this will not be compiled");
    /* no conflict with C-style comments */
    // no conflict with C++-style comments
#endif

und

if(0) {
    puts("this will be compiled but not be executed");
    /* no conflict with C-style comments */
    // no conflict with C++-style comments
}

Die Einführung von // Kommentaren in C99 war unter seltenen Umständen eine abwärtsinkompatible Änderung.

a = b //*divisor:*/ c
+ d; /* C89 compiles a = b / c + d;
        C99 compiles a = b + d; */

[bearbeiten] Beispiel

#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");
}

Ausgabe

World
Hello, again

[bearbeiten] Referenzen

  • C17-Standard (ISO/IEC 9899:2018)
  • 6.4.9 Kommentare (S. 54)
  • C11-Standard (ISO/IEC 9899:2011)
  • 6.4.9 Kommentare (S. 75)
  • C99-Standard (ISO/IEC 9899:1999)
  • 6.4.9 Kommentare (S. 66)
  • C89/C90-Standard (ISO/IEC 9899:1990)
  • 3.1.9 Kommentare

[bearbeiten] Siehe auch

C++-Dokumentation für Kommentare