C言語学習ポータル(無料版) 学習コンテンツ 人間がコンピュータになる訓練 エラーメッセージは敵ではない

🔍 人間がコンピュータになる訓練

エラーメッセージは敵ではない

無料公開版に収録・読む目安 12分

🎯 エラーメッセージの構造を知り、英語のまま読んで対処できるようになる

画面いっぱいに赤い英語が出ると、初めての人はまず心が折れます。でも大丈夫です。あれは怒られているのではなく、手紙をもらっているのです。

エラーメッセージは、コンパイラという翻訳者からの報告書です。しかも「どこで」「何が」おかしいかまで書いてくれています。これほど親切な情報が、他にあるでしょうか。

読む場所は決まっている

hello.c: In function 'main':
hello.c:5:15: error: expected ';' before '}' token
    5 |     int a = 3
      |               ^

形式はほぼ共通です。

読む順番は、行番号 → 種類 → 内容です。英文全体を訳そうとせず、この3つだけ拾ってください。

ビット全部読まなくていいんだ。まず数字を見る。それだけで半分解決だよ。

頻出単語はせいぜい10個

出てくる英単語はほぼ固定です。これだけ知っていれば戦えます。

1つ目だけ直す

最重要のコツです。エラーが30個出ても、いちばん上の1個だけ直して、もう一度コンパイルしてください。

コンパイラは、1つ目で混乱したまま読み進めるので、後続のエラーはその巻き添えであることがほとんどです。セミコロン1個の書き忘れで20個のエラーが出るのは、日常茶飯事です。上から順に、1個ずつ。これで数は勝手に減ります。

行番号は「気づいた場所」であって「原因の場所」ではない

もう一つ大事な性質です。5行目にエラーと出ていても、原因は4行目の書き忘れであることがよくあります。コンパイラは、読み進めて矛盾に気づいた場所を報告するからです。指定された行で何も見つからなければ、1つ上の行を見る。これで多くが解決します。

エラーが出るのは、Cの親切

最後に一つ。コンパイルの段階で止まってくれるのは、幸運なことです。実行してから壊れるバグに比べれば、はるかに安全で、はるかに直しやすい。エラーは門前払いではなく、水際の検査なのです。

要点まとめ

アプリで演習問題まで解く(無料・登録不要)

この項目に出てくる用語

エラーメッセージえらーめっせーじ

プログラムの何が・どこで間違っているかを、コンパイラや実行環境が知らせてくれる文章のこと。読めば直し方のヒントが詰まっている味方。英語で書かれていることが多いが、落ち着いて読めば重要な情報が含まれている。

コンパイラこんぱいら

ソースコードを機械語に変換するソフトウェア。文法チェックも同時に行い、間違いがあればコンパイルエラーとして知らせてくれる翻訳者兼校正者にあたる。gccやclangなど、C言語向けのコンパイラにはいくつかの種類がある。

コンパイルこんぱいる

ソースコードをコンピュータが直接実行できる機械語に変換する作業。翻訳者が人間の言葉を機械の言葉に訳してくれる工程だとイメージすると分かりやすい。この工程を経なければ、書いたコードはコンピュータの上でまったく動かせない。

バグばぐ

プログラムに含まれる誤りのこと。意図した動きと実際の動きがずれている状態を指し、プログラミングにつきものの現象として扱われる。「虫」を意味する言葉が由来とされ、古くから使われてきたプログラミング用語。

同じトラックのほかの項目

トレース表とは——実行を目で見る道具トレース表の作り方と書き進め方のルールを覚え、自分で表を用意できるようになる 代入をトレースする代入が「右辺を計算して左辺に上書きする」動作だと理解し、値の推移を正確に追える 分岐をトレースする条件の真偽を判定し、通った道だけをトレース表に残せるようになる ループをトレースする繰り返しの1周ごとに条件判定・本体・更新を追い、ループ終了後の値まで正しく求められる バグを見つける思考法——仮説と検証バグの原因を絞り込む手順(再現→範囲を狭める→仮説→1つずつ検証)を身につける ラバーダック・デバッグコードを声に出して説明することで、自分の理解の穴を見つけられるようになる 総仕上げ——紙上プログラム実行代入・分岐・繰り返しが混ざったプログラムを、最後まで自力でトレースできる
‹ ラバーダック・デバッグ 総仕上げ——紙上プログラム実行 ›

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る

📚 姉妹教材:手を動かして覚える Linux 教材 — Linuxとインフラの仕組みを地図で学ぶ

Web版 / BOOTH