WisdomSoft - for your serial experiences.

コメント

C 言語のコメントを解説します。コメント(注釈)を用いることで、プログラムコード内に任意のテキストをメモや説明に残すことができます。コメントはコンパイル時に無視されるため、コードには影響しません。

コード内にメモを残す

コードの中に何らかのメモを残しておきたいことがあるかもしれません。しかし、ソースコード内に書かれたテキストはコンパイラによって処理されるため、プログラミング言語の仕様で定められた文法に従っていないテキストが含まれていればエラーとなってしまいます。

そこで、コードとは直接の関係のないメモなどをソースファイル内に残す手段としてコメント(Comment)が用いられます。日本語では注釈と訳されますが、一般には英語のままコメントと呼ぶことが多いです。コメントはコンパイル時にコードとしては扱われず、完全に存在しないものとして扱われるため、日本語も含めて自由にテキストを書き残すことができます。コメントは /* 記号から始まって */ 記号で終わります。

複数行コメント
/* コメント */

コメントは、コードのあらゆる場所に記述することができ、上記の /* から */ までの間のテキストはコンパイル時に無視されるため、無いものとして扱われます。

/* ここはコメントです */
/*
	改行もできます。
	通常はコードの意味や説明を残すために使われます。
*/

上のコメントはどちらも有効です。C 言語に限らず、Java や C# など、後発のプログラミング言語の多くが、この方式のコメントを踏襲しています。

コード1
#include <stdio.h>

int main(void)
{
	/*
		C言語、はじめました。
		printf("このコードは実行されません!!");
	*/
	printf("Stand by Ready!!\n");
	return 0;
}
実行結果
コード1 実行結果

コード1のように /* から */ までの間には、プログラムとは関係のない任意のコメントを残すことができます。通常は、ソースコードの補足説明や注意書きなどをコメントとして残しますが、エラーが発生するコードなどを一時的に無効化する目的にも利用できます。

ひとつ前の標準 C である ISO/IEC 9899:1990 (C90)で決められているコメントは上記の方法だけですが、最新の標準 C である ISO/IEC 9899:1999 (C90)及び C++ 言語においては単一行コメントと呼ばれる別のコメントが用意されています。現代の C コンパイラの多くは C++ コンパイラとしての機能も兼ね備えているため、代表的な C コンパイラの多くが標準 C++ で加えられている単一行コメントを使えます。

単一行コメントは、連続したスラッシュ記号 2 つ // から始まって、その行の末尾(改行文字)で終了します。従って、自動的にコメントは行単位となります。このコメント方法は C++ 言語で追加されたものですが、今日の多くのコンパイラは C 言語でもこのコメント方法を許容します。

単一行コメント
// コメント

長文の説明は /* */ による複数行コメントが便利ですが、メモ程度であれば単一行コメントの方が簡素に記述できます 。

コード2
#include <stdio.h>

int main(void)
{
	//C言語、はじめました。
	printf("Stand by Ready!!\n");
	return 0;
}
実行結果
コード2 実行結果

単一行コメントと複数行コメントのどちらを使うかは開発者の好みです。コメント量に応じて使い分けてください。

コメントによるトークンの分離

複数行コメントである /* */ は、トークンを区切る性質があります。一般的にコメントはコンパイル時に存在しないものとして扱われると解釈されますが、/* から */ までのコメントは前後する文字を区切るホワイトスペースとしても作用します。よって、アルファベット列の間に /* */ コメントを挟むと、アルファベット列は結合されずに異なるトークンとして分離されます。

int ma/* */in(void) { return 0; }

上のコードは関数名 main の間に複数行コメントを入れています。コメントはコンパイラによって無視されるため、問題なく main と解釈されると思うかもしれませんが、複数行コメントはトークンを区切るため以下のコードと同じ意味になります。

int ma in(void) { return 0; }

これでは main() 関数の名前が途中で切れてしまい、意味が変わってしまいます。構文に反しているためビルドしてもエラーが発生します。