【C言語入門】コメントを使いこなす:ソースコードに「メモ」を残す2つの方法
プログラムを読みやすくしたり、一時的に特定の処理を無効化(コメントアウト)したりするために欠かせないのが「コメント」です。実はC言語には2種類の書き方があり、それぞれ使えるようになった「時代(規格)」が異なります。
1. 実践:2種類のコメントを書いてみる
【 手を動かして確認 】 新しく `comment.c` を作成し、以下のコードをコンパイルしてみてください。コメント部分はコンパイラに無視されるため、実行結果には影響しません。
int main(void) {
/* これは「複数行」コメントです。
昔から使われている伝統的な書き方です */
printf("Hello with Comments!\n");
// これは「1行」コメントです。現代の主流です。
return 0;
}
2. 伝統的な書き方:/* 文字列 */
【 ここがエンジニアの視点 】 最初期のC言語(旧規格)から存在する書き方です。記号で囲った範囲すべてがコメントになるため、長い解説を書くのに適しています。ただし、`/* ... /* ... */ */` のように入れ子(ネスト)にすることはできません。最初の `*/` が現れた時点でコメント終了とみなされ、エラーの原因になります。
3. 現代的な書き方:// 文字列
【 ここが仕組みのキモ 】 行の途中に `//` を書くと、その行の末尾までがコメントになります。実はこれ、もともとはC++という別の言語の機能でしたが、C99規格(1999年)から正式にC言語でも使えるようになりました。今のMac(C17/C11)環境であれば、何の問題もなく使用可能です。
4. 個人的な見解:なぜ「//」を優先して使うのか
【 ここがこだわり 】 2つの書き方がありますが、個人的には「//」をメインで使うようにしています。その理由は、圧倒的に「コードの修正(デバッグ)がしやすいから」です。
・`/* */` は、開始と終了の両方の記号を意識しなければならず、範囲を広げたり縮めたりする際に手間がかかります。
・一方 `//` は、行の先頭に付ける・外すだけの単純作業で済みます。最近のエディタ(VS Codeなど)のショートカット機能とも相性が良く、直感的にコメントアウト・解除を切り替えられるのがメリットです。
古いソースコードの保守でどうしても必要な場合を除き、普段の学習や開発では `//` だけで統一したほうが、作業効率は格段に上がると感じています。
5. 理解度チェック!練習問題
【 チャレンジ 】 C言語のコメントに関する説明として、**間違っているもの**はどれでしょうか?
選択肢:
A. `/* */` は複数行を囲むことができる。
B. `//` は行の末尾までをコメントにする。
C. `//` 形式は、最初期のC言語(C89)でも標準で使えた。
D. コメントアウトを活用すると、特定の手続きを一時的に無効化できる。
正解と解説を見る
正解:C
`//` 形式がC言語の標準規格(C99)に採用されたのは1999年です。それより前の非常に古い規格では、`/* */` しか認められていませんでした。現在のMac環境(C17など)では気にせず使ってOKです。
6. まとめ:やってみて分かったこと
「なぜ2種類あるのか?」という疑問を深掘りすると、C言語が歩んできた進化の歴史に突き当たります。個人的にはメンテナンス性を重視して `//` を推奨しますが、両方の特徴を知っておくことで、他人が書いたコードを読む際にも戸惑わずに済みます。自分なりの「書き方のルール」を持って、楽しくコードを書いていきましょう。