C コメント
"コメント" は、コンパイラによって 1 個の空白文字として扱われる、スラッシュとアスタリスクの組み合わせ (/*) で始まる文字シーケンスです。それ以外の場合は無視されます。 コメントには、"コメント終了" 区切り記号 (*/) を除いて、改行文字も含む、表現できる文字セットの文字の任意の組み合わせを含めることができます。 コメントは複数行にわたって記述できますが、入れ子にすることはできません。
コメントは、空白文字を使用できる任意の場所に記述することができます。 コンパイラはコメントを 1 個の空白文字として扱うため、コメントをトークン内に含めることはできません。 コンパイラは、コメント内の文字を無視します。
コメントを使用してコードの内容を文章で説明します。 次の例は、コンパイラに許容されるコメントです。
/* Comments can contain keywords such as
for and while without generating errors. */
コメントは、コード ステートメントと同じ行に記述することができます。
printf( "Hello\n" ); /* Comments can go here */
関数またはプログラム モジュールの前に説明的なコメント ブロックを配置できます。
/* MATHERR.C illustrates writing an error routine
* for math functions.
*/
コメントには入れ子になったコメントを含めることができないため、この例ではエラーが発生します。
/* Comment out this routine for testing
/* Open file */
fh = _open( "myfile.c", _O_RDONLY );
.
.
.
*/
エラーは、コンパイラが、*/
という語の後の最初の Open file
をコメントの終わりとして認識したために発生しました。 残りのテキストを処理しようとして、注釈の外部に */
が見つかった時点でエラーが生成されます。
テスト目的でコメントを使用して特定のコード行を無効にすることができますが、プリプロセッサ ディレクティブの #if
および #endif
と条件付きコンパイルを利用して同じことを実行することもできます。 詳細については、「プリプロセッサ リファレンス」の「プリプロセッサ ディレクティブ」を参照してください。
Microsoft 固有の仕様
Microsoft コンパイラは、2 つのスラッシュ ( //
) で始まる 1 行コメントもサポートします。 このコメントは次の行に続けることはできません。
// This is a valid comment
2 つのスラッシュ (//
) で始まるコメントは、エスケープ文字が前に付いていない次の改行文字で終了します。 次の例では、改行文字の前に円記号 (\
) が付いており、"エスケープ シーケンス" が作成されます。このエスケープ シーケンスにより、コンパイラは、次の行を前の行の一部として処理します。 (詳細については、「エスケープ シーケンス」を参照してください)。
// my comment \
i++;
したがって、i++;
ステートメントはコメント アウトされます。
Microsoft C の既定では、Microsoft 拡張機能が有効になっています。 これらの拡張機能を無効にするには、/Za を使用します。
Microsoft 固有の仕様はここまで