Comments
コメントは一種のコード内ドキュメントとして機能します。プログラムに挿入されると、それらはコンパイラによって事実上無視されます。コメントは、ソースコードを読む人間がメモとして使用することを目的としています。
目次 |
構文
/*
コメント
*/
|
(1) | ||||||||
//
コメント
|
(2) | (C99以降) | |||||||
すべてのコメントはプログラムから translation phase 3 で削除され、各コメントは単一の空白文字で置き換えられます。
Cスタイル
Cスタイルコメントは通常、大きなテキストブロックや小さなコードフラグメントをコメントするために使用されますが、単一行のコメントにも使用できます。Cスタイルコメントとしてテキストを挿入するには、単にテキストを
/*
と
*/
で囲みます。Cスタイルコメントはコンパイラに
/*
と
*/
の間のすべての内容を無視するように指示します。C標準の一部ではありませんが、
/**
と
**/
はドキュメンテーションブロックを示すためによく使用されます。これは2つ目のアスタリスクが単にコメントの一部として扱われるため、正当な記法です。
文字定数、文字列リテラル、またはコメント内を除き、
character constant
、
string literal
またはコメントの外側では、文字
/*
がコメントの開始を示します。このようなコメントの内容は、マルチバイト文字の識別とコメントを終了する文字
*/
の検出のみを目的として検査されます。Cスタイルのコメントはネストできません。
C++-style
C++-styleコメントは通常、単一行のテキストやコードのコメントに使用されますが、複数行のコメントを形成するためにまとめて配置することもできます。C++-styleコメントとしてテキストを挿入するには、テキストの前に
文字定数
内、
文字列リテラル
内、またはコメント内を除き、文字
// y = f(x); // invoke algorithm
C-styleコメントはC++-styleコメント内に現れることがあります: // y = f(x); /* invoke algorithm */
C++-styleコメントはC-styleコメント内に現れることがあります。これはソースコードの小さなブロックを除外するための仕組みです: /*
y = f(x); // invoke algorithms
z = g(x);
*/
|
(C99以降) |
注記
コメントは 除去される ため、マクロを使用してコメントを形成することはできず、終端がないCスタイルのコメントは #include されたファイルから溢れ出ることはありません。
/* マクロを使用してコメントを形成する試み */ /* ただし、文字列 "//" は空白に置き換えられる */ #ifndef DEBUG #define PRINTF // #else #define PRINTF printf #endif ... PRINTF("Error in file %s at line %i\n", __FILE__, __LINE__);
コメントアウト以外に、ソースコードの除外に使用される他のメカニズムは以下の通りです:
#if 0 puts("this will not be compiled"); /* Cスタイルコメントとの競合はありません */ // C++スタイルコメントとの競合はありません #endif
and
if(0) { puts("this will be compiled but not be executed"); /* no conflict with C-style comments */ // no conflict with C++-style comments }
C99における//コメントの導入は、一部の稀な状況において破壊的変更となりました:
a = b //*divisor:*/ c + d; /* C89では a = b / c + d; とコンパイルされる; C99では a = b + d; とコンパイルされる */
例
#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"); }
出力:
World Hello, again
参考文献
- C17規格 (ISO/IEC 9899:2018):
-
- 6.4.9 コメント (p: 54)
- C11規格 (ISO/IEC 9899:2011):
-
- 6.4.9 コメント (p: 75)
- C99規格 (ISO/IEC 9899:1999):
-
- 6.4.9 コメント (p: 66)
- C89/C90標準 (ISO/IEC 9899:1990):
-
- 3.1.9 コメント
関連項目
|
C++ documentation
for
Comments
|