前回はプロジェクト「0055_array」を新しく作り、配列を使うプログラムを作成しました。
今回は、新しくプロジェクト「0060_comment」を作り、 コメントの使い方をお話します。コメントとはソースコードに書くメモ書きのようなもので、 プログラムとしてはなにも実行されず、無視されます。
コメントは変数の用途やプログラムの処理内容などについて、人間がよめる言葉で補足説明するときなどに書いておくと、 他の人が見た時や、将来の自分がソースコードを見直すときにヒント となり助かるときがあるでしょう。
ではでは 文字列を取り扱うサンプルプログラムを作成してみましょう。
プロジェクト「0060_comment」を新しく用意し、プロジェクトに空の「Comment.c」を追加し、下のソースコードをコピペして動かしてみましょう。
※ソースコードでコメント部分の行は背景色を変えています。
#include <stdio.h>
/*
* プログラムのエントリポイント
*/
int main() {
/* === 変数の宣言と初期化 === */
// プレイヤーの名前
char* player = "ぷらんく";
// レベル
short level = 5;
/* === プレイヤーのステータスを表示 === */
printf("+------[ステータス]------+\n");
printf("|%10s : %-11s|\n", "名前", player);
printf("|%10s : %03d%8s|\n", "レベル", level,"");
printf("+------------------------+\n");
}
コピペなりして、実行してみて下さい。
+------[ステータス]------+
| 名前 : ぷらんく |
| レベル : 005 |
+------------------------+
こんな結果になります。
コメント部分の行は特になにも処理はされず、無視されているのがわかると思います。
コメントの書き方は大きく2種類あります。
ソースコードで「/」からはじまり「/」までの部分がコメントになり、 プログラムが実行されるときには無視されます。このコメントの書き方だと、 複数行にわたってコメントにできます。 書き方はこんな感じ。今回の3行目~5行目です。
/*
* プログラムのエントリポイント
*/
3行目で「/」があり、コメントが開始され、5行目に「/」でコメントが終了します。 その間は説明文等を入れることができます。4行目の頭にも「*」がありますが、これはただの見た目の飾りで、特に意味はありません。
関数の前だったり、ソースコードの冒頭に著作権表記やライセンス、バージョン、作者への連絡先なんかが入っていることが多いです。
ソースコードで「//」の記載がある行について、「//」記号から行末までがコメントという扱いとなります。 今回のプログラムソースコードでは8行目や10行目がこのコメントの書き方になります。
// プレイヤーの名前
この書き方はC99 (1999 年のC言語のISO規格)から有効となったコメントの書き方です。
Visual Studio 上でC言語を書くときももちろん使えますし、最近のコンパイラであればVisual Studio 以外でも「//」のコメントの書き方でもまったく問題ないはずです。
C言語に限った話ではありませんが、特定のソースコードの行を一時的にコメントにして、実行されないようにすることができます。
コメントアウトと呼ばれ、 あるプログラムを実験敵に実行する時やもともとあった処理を残しておくとき、 コードの誤り(バグ)を取り除くときにも一つのテクニックとして使用されることがあります。
// short level = 5;
short level = 99;
printf("レベルは %d です。", level );
例えば、ちょっとプレイヤのレベルを 99 に上げて様子をみたいときなどに、上のコードのように、元々あったコードをコメントアウトし、かわりに level = 99 を追加して実験としてプログラムを動かすことができます。
元の level = 5 に戻すときは、 level = 99 の行をコメントアウト(行の頭に // を書く)し、元々の level = 5 のほうのコメント「//」を消すだけで簡単です。
/* ~ コメント ~ */ は本来プログラムの補足説明を書くべきであり、プログラムを実行させない目的ではありませんが、実態としてよく使用されているのでお話しておきます。| ある行の処理を実行させないということを行うのであれば、本来、後のページで出てくる 「#if 0」~「#endif」のプリプロセッサ命令の間に書くなどがより良いのかもしれません。
複数行を「//」でコメントアウトしようとすると、その行のすべての頭に「//」を書かないといけないため、ちょっと面倒ですね。そうした場合に「/* ~ コメント ~ /」で囲むとよいのですが、注意しなければならないのは、「/ ~ コメント ~ */」は二重で囲むことができない ということです。
古くからあるC言語のソースコードなどでは、「// コメント」ではなく「/* ~コメント ~ */」となっているかとおもいます。そんなコメントを含む複数行をコメントアウトしたい場合もあるかともいます。
たとえば、今回のプログラムで、printfで変数の中身を表示する部分をコメントアウトしたいと考えた時、こんな書き方はできないので気を付けてください。(12行目 と 18 行目にコメントが追加されています)
#include <stdio.h>
/*
* プログラムのエントリポイント
*/
int main() {
/* === 変数の宣言と初期化 === */
// プレイヤーの名前
char* player = "ぷらんく";
// レベル
short level = 5;
/* 以下はステータスの表示例
/* === プレイヤーのステータスを表示 === */
printf("+------[ステータス]------+\n");
printf("|%10s : %-11s|\n", "名前", player);
printf("|%10s : %03d%8s|\n", "レベル", level,"");
printf("+------------------------+\n");
*/
}
「/* ~ コメント ~ */」が二重になってしまっています。これは正しくコンパイラが処理できず、ビルドが失敗します。
このC言語でゲーム作成のシリーズ内では、基本的にコメントは「//」のほうを使って書いていこうと思います。必要に応じて、変数や処理の概要をわかりづらいソースコードの箇所に追加していきます。
複数行を一気にコメント化する便利なショートカットが Visual Studio にあります。
わりと使うので、覚えておくと便利です。
Visual Studio のコメントアウト ショートカット
ショートカット | 意味と使い方 |
---|---|
+ から + | エディタで選択している行の頭に「//」を加えてコメントアウトします。キーの [Comment の頭文字、で覚えておくとよさそうです。 | ] は
+{ から + | エディタで選択している行の頭に「//」があれば削除します。キーの [UnComment の頭文字、で覚えてます。 | ] は
コメントを変数や関数の前に書くことで、Visual Studio のドキュメントディタで変数をしようとしたとき、日本語で漢字変換するときのように 自分でつけたコメントの内容を、エディタのカーソル場所にポップアップしてくれます。
これは Visual Studio のエディタが持つ、ソースコードを書くときに仕える補助機能で、「IntelliSense」(インテリセンス)と呼ばれています。
今回、変数「player」に「プレイヤーの名前」というコメントを付けましたが、その変数を使おうとするときに、似たような変数の名前一覧や、変数につけたコメントの内容が表示されるようになります。
例えば player という変数を使おうとして、「play」まで書いたときの画面はこんな感じになります。play の下あたりに、似たような変数などの一覧が
のアイコンで表示されていて、「player」も候補にあがってます。その右側に、「変数の宣言」や「コメントの中身」、「どのソースコード(ファイル)で書いたのか」が表示されています。とっても便利です。
似たような名前や機能を持つ変数、関数が増えたりすると、こういったコメント付けをしておくことで開発効率があがりますし、変数、関数の使い間違えを減らすことができるので、プログラムの品質を上げることができます。
2つのスタイルのコメントがC言語では使えますが、もともと 「/* コメント /」はPL/I というプログラミング言語、 「// コメント」は BCPL というプログラミング言語が元 になっているようで、当初、C言語は「/ コメント */」のみ導入されていました。
C++言語で「// コメント」と「/* コメント */」の両方が扱えるように対応され、利便性からC言語側でも使えるように導入された、という流れのようです。
C++言語はC言語の機能拡張版なんていう話も聞きますが、相互に影響を与えあって発展しあっているというのが正しいことのようです。
Visual Studio の Intelli Sense についてはまた別のページで便利な使い方や書き方をまとめてみたいと思います。
今回はここまで。お疲れさまでした。
更新日 | 更新内容 |
---|---|
更新なし |
コメント、ありがとうございます。
ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。
Twitter:@NodachiSoft_jpお名前:以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください
お名前: