WisdomSoft - for your serial experiences.

2.5 コメント

コメントを用いることで、コード内に任意のメモを残すことができます。コメントはコンパイル時に無視されるため、コードには影響しません。

2.5.1 いつか読み返す日のために

本書の C 言語のサンプルプログラムは、どんなに長くても数十行程度のものです。これは、読者が各章が話題としている重要な機能の原理を十分に学習できるようにするため、ソースコードは可能な限りシンプルな形にまとめ、余分なものは排除するように努めているからです。

しかし、実際の開発現場のコードは、少なくて数千、大規模な開発の場合は数十万~数百万行にも及びます。これほどの大規模なプログラムコードの場合、開発者でも管理が大変です。他人が書いたソースを読まなければならなくなることもあります。たとえ自分のコードでも、後に読み直したとき、それが何を行っていたのかわからなくなることがあるでしょう。

そこで、プログラムの実行とは何の関係もないコメント(注釈)をソース上に記しておくことができます。C言語のコメントは /* で始まり */ で終わります。/* と */ の間の文字は、例外なくコンパイル時に排除されます。改行文字を含めることができるので、複数行のコメントも可能です。コメントを残しておけば、他の人がソースを見たとき、何を行っているのかを説明することができますし、将来自分で読み返したときも、コードが何をしているのかを思い出すきっかけを作ることができるでしょう。

コード1
#include <stdio.h>

int main()
{
	/*コメントなので、プログラムには何の影響もありません*/
	printf("これは実行されます\n");
	/*printf("コメントに含まれているため実行されません\n");*/
	/*
		ソースを解読しやすいように、補足説明などを記述します
		コメントは、何行あってもかまいません
	*/
	
	return 0;
}
実行結果
コード1 実行結果

このプログラムは、コード内に日本語でコメントを残しています。このように、大規模な開発プロジェクトではプログラムの説明をコメントとして残すことが望まれます。ただし、コメントは文字列リテラル内に残すことはできません。

また、コメントを重ねることはできません。例えば /* /* */ */ と書いた場合 /* /* */ までがコメントと解釈されます。

C 言語の仕様としては定義されていませんが、多くのコンパイラは1行コメントもサポートしています。1行コメントは連続したスラッシュ文字 // からなり、ここから次の行までをコメントとするものです。例えば次のようになるでしょう。

//ここはコメントです。
//範囲は1行だけなので、各行に指定する必要があります。
printf("Kitty on your lap");	//行の途中からもOK。
///////////これでもコメントです。///////////

この 1 行コメントは C++ 言語の仕様であり C 言語の仕様ではありませんが、現代の多くのコンパイラは C++ をサポートするため、C 言語でも1行コメントを許容しているのです。例えば、ある行を削除してコンパイルしたい場合などは、この1行コメントを使ってスマートに実験するということができるでしょう。もちろん、純粋な C 言語のコードを書きたいのであれば、このコメントは使うべきではありません。

因みに、C 言語のコメント /* */ と C++ で追加されたコメント // は、かなり多くのプログラミング言語で共通するコメントの標準的な存在です。C/C++ 言語はもちろん、Java 言語、C# 言語、JavaScript 言語 などでもこのコメントが使われています。