Comments
Kommentare dienen als eine Art von In-Code-Dokumentation. Wenn sie in ein Programm eingefügt werden, werden sie vom Compiler effektiv ignoriert; sie sind ausschließlich als Notizen für die Menschen gedacht, die den Quellcode lesen.
Inhaltsverzeichnis |
Syntax
/*
Kommentar
*/
|
(1) | ||||||||
//
Kommentar
|
(2) | (seit C99) | |||||||
Alle Kommentare werden aus dem Programm in der Übersetzungsphase 3 entfernt, indem jeder Kommentar durch ein einzelnes Leerzeichen ersetzt wird.
C-Stil
C-style Kommentare werden normalerweise verwendet, um große Textblöcke oder kleine Codefragmente zu kommentieren; sie können jedoch auch zum Kommentieren einzelner Zeilen verwendet werden. Um Text als C-style Kommentar einzufügen, umgeben Sie den Text einfach mit
/*
und
*/
. C-style Kommentare weisen den Compiler an, alle Inhalte zwischen
/*
und
*/
zu ignorieren. Obwohl es nicht Teil des C-Standards ist, werden
/**
und
**/
oft verwendet, um Dokumentationsblöcke zu kennzeichnen; dies ist zulässig, da der zweite Stern einfach als Teil des Kommentars behandelt wird.
Außerhalb einer
Zeichenkonstante
, eines
String-Literals
oder eines Kommentars leiten die Zeichen
/*
einen Kommentar ein. Der Inhalt eines solchen Kommentars wird nur untersucht, um Multibyte-Zeichen zu identifizieren und die Zeichen
*/
zu finden, die den Kommentar beenden. C-Stil-Kommentare können nicht geschachtelt 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
Außerhalb einer
Zeichenkonstante
, eines
Zeichenkettenliterals
oder eines Kommentars führen die Zeichen
// 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 Quellcodeblocks: /*
y = f(x); // invoke algorithms
z = g(x);
*/
|
(seit C99) |
Hinweise
Da Kommentare entfernt werden bevor die Präprozessor-Stufe beginnt, kann ein Makro nicht zur Bildung eines Kommentars verwendet werden und ein nicht abgeschlossener C-Stil-Kommentar greift nicht aus einer #include-Datei über.
/* Ein Versuch, ein Makro zur Bildung eines Kommentars zu verwenden. */ /* Aber ein Leerzeichen ersetzt die Zeichen "//". */ #ifndef DEBUG #define PRINTF // #else #define PRINTF printf #endif ... PRINTF("Error in file %s at line %i\n", __FILE__, __LINE__);
Neben dem Auskommentieren werden andere Mechanismen zur Quellcode-Ausschließung verwendet:
#if 0 puts("dies wird nicht kompiliert"); /* no conflict with C-style comments */ // no conflict with C++-style comments #endif
und
if(0) { puts("dies wird kompiliert, aber nicht ausgeführt"); /* no conflict with C-style comments */ // no conflict with C++-style comments }
Die Einführung von // Kommentaren in C99 war in einigen seltenen Fällen eine breaking change:
a = b //*Divisor:*/ c + d; /* C89 kompiliert a = b / c + d; C99 kompiliert a = b + d; */
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
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
Siehe auch
|
C++-Dokumentation
für
Kommentare
|