Nodachisoft Nodachi Sword Icon
  
@あまじ✎ 2018年6月28日に更新

第2章08 プログラムにコメントを書く

イチからゲーム作りで覚えるC言語
第2章07 変数に配列を使う : PREV
NEXT : 第2章09 ユーザからの入力を受け付ける :

この記事でやること

前回はプロジェクト「0055_array」を新しく作り、配列を使うプログラムを作成しました。

今回は、新しくプロジェクト「0060_comment」を作り、 コメントの使い方をお話します。コメントとはソースコードに書くメモ書きのようなもので、 プログラムとしてはなにも実行されず、無視されます

コメントは変数の用途やプログラムの処理内容などについて、人間がよめる言葉で補足説明するときなどに書いておくと、 他の人が見た時や、将来の自分がソースコードを見直すときにヒント となり助かるときがあるでしょう。

コメントを書き込んだプログラム

ではでは 文字列を取り扱うサンプルプログラムを作成してみましょう。

プロジェクト「0060_comment」を新しく用意し、プロジェクトに空の「Comment.c」を追加し、下のソースコードをコピペして動かしてみましょう。

※ソースコードでコメント部分の行は背景色を変えています。

 
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");
}

コピペなりして、実行してみて下さい。

Comment.c
+------[ステータス]------+
|      名前 : ぷらんく   |
|    レベル : 005        |
+------------------------+

こんな結果になります。

コメント部分の行は特になにも処理はされず、無視されているのがわかると思います。

コメントの書き方は大きく2種類あります。

コメントの書き方

C言語で昔からあるコメントの書き方

ソースコードで/」からはじまり「/」までの部分がコメントになり、 プログラムが実行されるときには無視されます。このコメントの書き方だと、 複数行にわたってコメントにできます。 書き方はこんな感じ。今回の3行目~5行目です。

 
Comment.c
/*
 * プログラムのエントリポイント
 */

3行目で「/」があり、コメントが開始され、5行目に「/」でコメントが終了します。 その間は説明文等を入れることができます。4行目の頭にも「*」がありますが、これはただの見た目の飾りで、特に意味はありません。

関数の前だったり、ソースコードの冒頭に著作権表記やライセンス、バージョン、作者への連絡先なんかが入っていることが多いです。

後からC言語に追加されたコメントの書き方

ソースコードで「//」の記載がある行について、「//」記号から行末までがコメントという扱いとなります。 今回のプログラムソースコードでは8行目や10行目がこのコメントの書き方になります。

 
Comment.c
 // プレイヤーの名前

この書き方は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 行目にコメントが追加されています)

 
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");
 */
}

「/* ~ コメント ~ */」が二重になってしまっています。これは正しくコンパイラが処理できず、ビルドが失敗します。

このシリーズでのコメントの書き方

このC言語でゲーム作成のシリーズ内では、基本的にコメントは「//」のほうを使って書いていこうと思います。必要に応じて、変数や処理の概要をわかりづらいソースコードの箇所に追加していきます。

Visual Studio の機能を使って複数行をコメントアウトする

複数行を一気にコメント化する便利なショートカットが Visual Studio にあります。

わりと使うので、覚えておくと便利です。

Visual Studio のコメントアウト ショートカット

ショートカット 意味と使い方
Ctrl+k から Ctrl+c エディタで選択している行の頭に「//」を加えてコメントアウトします。キーの [c] は Comment の頭文字、で覚えておくとよさそうです。
Ctrl+{}k から Ctrl+u エディタで選択している行の頭に「//」があれば削除します。キーの [u] は UnComment の頭文字、で覚えてます。

コメントと Visual Studio の IntelliSense との連携

コメントを変数や関数の前に書くことで、Visual Studio のドキュメントディタで変数をしようとしたとき、日本語で漢字変換するときのように 自分でつけたコメントの内容を、エディタのカーソル場所にポップアップしてくれます

これは Visual Studio のエディタが持つ、ソースコードを書くときに仕える補助機能で、「IntelliSense」(インテリセンス)と呼ばれています。

今回、変数「player」に「プレイヤーの名前」というコメントを付けましたが、その変数を使おうとするときに、似たような変数の名前一覧や、変数につけたコメントの内容が表示されるようになります。

例えば player という変数を使おうとして、「play」まで書いたときの画面はこんな感じになります。play の下あたりに、似たような変数などの一覧が

Variable or Const Icon on IntelliSense dialog

のアイコンで表示されていて、「player」も候補にあがってます。その右側に、「変数の宣言」や「コメントの中身」、「どのソースコード(ファイル)で書いたのか」が表示されています。とっても便利です。

IntelliSense で変数のコメントを表示 IntelliSense で変数のコメントを表示

似たような名前や機能を持つ変数、関数が増えたりすると、こういったコメント付けをしておくことで開発効率があがりますし、変数、関数の使い間違えを減らすことができるので、プログラムの品質を上げることができます。

コメントの由来

2つのスタイルのコメントがC言語では使えますが、もともと 「/* コメント /」はPL/I というプログラミング言語「// コメント」は BCPL というプログラミング言語が元 になっているようで、当初、C言語は「/ コメント */」のみ導入されていました。

C++言語で「// コメント」と「/* コメント */」の両方が扱えるように対応され、利便性からC言語側でも使えるように導入された、という流れのようです。

C++言語はC言語の機能拡張版なんていう話も聞きますが、相互に影響を与えあって発展しあっているというのが正しいことのようです。

あとがき

Visual Studio の Intelli Sense についてはまた別のページで便利な使い方や書き方をまとめてみたいと思います。

今回はここまで。お疲れさまでした。

非常に参考になったサイトさまや、参考文献など

ページの更新履歴

更新日 更新内容
更新なし
イチからゲーム作りで覚えるC言語
第2章07 変数に配列を使う : PREV
NEXT : 第2章09 ユーザからの入力を受け付ける :
 
 
送信しました!

コメント、ありがとうございます。

なんかエラーでした

ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。

Twitter:@NodachiSoft_jp
お名前:
 
連絡先:
 
メッセージ:
 
戻る
内容の確認!

以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください

お名前:
 
連絡先:
 
メッセージ:
 
Roboto からの操作ではないという確認のため確認キーを入れてください。
確認キー=95
戻る
 / 
送信確認へ
コメント欄
コメント送信確認へ

関連ありそうな記事(5件)です!

ゲーム等で使えるつなぎ目のないループするテクスチャ画像の作り方

#ツール#ゲームプログラミング✎ 2021-01-24
ゲームなどで使えるループ画像、パターンテクスチャのツール、手動での作り方をまとめ
広告領域
追従 広告領域
目次
第2章08 プログラムにコメントを書く
第2章08 プログラムにコメントを書く
この記事でやること
この記事でやること
コメントを書き込んだプログラム
コメントを書き込んだプログラム
コメントの書き方
コメントの書き方
C言語で昔からあるコメントの書き方
C言語で昔からあるコメントの書き方
後からC言語に追加されたコメントの書き方
後からC言語に追加されたコメントの書き方
コメントを利用した処理のスキップ
コメントを利用した処理のスキップ
複数行のコメントアウト
複数行のコメントアウト
このシリーズでのコメントの書き方
このシリーズでのコメントの書き方
Visual Studio の機能を使って複数行をコメントアウトする
Visual Studio の機能を使って複数行をコメントアウトする
コメントと Visual Studio の IntelliSense との連携
コメントと Visual Studio の IntelliSense との連携
コメントの由来
コメントの由来
あとがき
あとがき
非常に参考になったサイトさまや、参考文献など
非常に参考になったサイトさまや、参考文献など
ページの更新履歴
ページの更新履歴
Nodachisoft © 2020