Kommentare
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) | |||||||
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++-StilC++-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 Zeichenkonstanten, einem String-Literal oder einem Kommentar leiten die Zeichen // y = f(x); // invoke algorithmEin 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
|