2.3 コメント
2.3.1 コード内にメモを残す
コードの中に何らかのメモを残しておきたいことがあるかもしれません。しかし、ソースコード内に書かれたテキストはコンパイラによって処理されるため、プログラミング言語の仕様で定められた文法に従っていないテキストが含まれていればエラーとなってしまいます。
そこで、コードとは直接の関係のないメモなどをソースファイル内に残す手段としてコメント(Comment)が用いられます。コメントはコンパイル時にコードとしては扱われず、完全に存在しないものとして扱われるため、日本語も含めて自由にテキストを書き残すことができます。
C++ 言語では 2 種類のコメント方法が提供されています。1 つは C 言語から伝統的に使われている /* から始まって */ で終わる複数行コメントです。この /* から */ までの間に挟まれている文章は、すべてコメントとしてコンパイル時には無視されます。
/* コメント */
コメントは、コードのあらゆる場所に記述することができ、上記の /* から */ までの間のテキストはコンパイル時には無視されるため自由にメモを残すことができます。
#include <iostream> int main() { /* お前のコードは我々がいただいた。 ALL YOUR CODE ARE BELONG TO US. */ std::cout << "Kitty on your lap\n"; return 0; }
コード1のように /* から */ までの間には、プログラムとは関係のない任意のコメントを残すことができます。通常は、ソースコードの補足説明や注意書きなどをコメントとして残しますが、エラーが発生するコードなどを一時的に無効化する目的にも利用できます。
もう 1 つのコメント方法は、C++ 言語で追加された単一行コメントです。このコメントは連続したスラッシュ記号 2 つ // から始まって、その行の末尾(改行文字)で終了します。従って、自動的にコメントは行単位となります。このコメント方法は C++ 言語で追加されたものですが、今日の多くのコンパイラは C 言語でもこのコメント方法を許容します。
// コメント
長文の説明は /* */ による複数行コメントが便利ですが、メモ程度であれば単一行コメントの方が簡素に記述できます 。
#include <iostream> int main() { //ゆっくり書いてってね std::cout << "Kitty on your lap\n"; return 0; }
単一行コメントと複数行コメントのどちらを使うかは開発者の好みです。コメント量に応じて使い分けてください。
コメントは、後にコードを読み直すときのことを考えて関連した情報をメモしておくために使われます。他にも、プログラムのエラーとなっている原因と思われる部分を一時的に無効化するためにコメント化するなどのテクニックも一般的です。稀にコードとは全く無関係なコメントを残すプログラマも存在するようですが、コードを読むことになる他の開発者の迷惑にならない範囲で書き残してください。
2.3.2 コメントによるトークンの分離
複数行コメントである /* */ は、トークンを区切る性質があります。一般的にコメントはコンパイル時に存在しないものとして扱われると解釈されますが、/* から */ までのコメントは前後する文字を区切るホワイトスペースとしても作用します。よって、アルファベット列の間に /* */ コメントを挟むと、アルファベット列は結合されずに異なるトークンとして分離されます。
int ma/* */in() { return 0; }
上のコードは関数名 main の間に複数行コメントを入れています。コメントはコンパイラによって無視されるため、問題なく main と解釈されると思うかもしれませんが、複数行コメントはトークンを区切るため以下のコードと同じ意味になります。
int ma in() { return 0; }
これでは main() 関数の名前が途中で切れてしまい意味が変わってしまいます。構文に反しているためビルドしてもエラーが発生します。