初心者が知っておきたい「エラーと警告」の基本(コンパイルエラー・実行時エラーなど)
C言語でプログラムを作ると、必ず出会うのがエラーや警告です。
「文法が間違っている」「条件が成り立たない」「メモリに問題がある」など原因は様々です。
ここでは、初心者がまず覚えておきたい主なエラーの種類と対処法をやさしく解説します。
1. コンパイルエラー(構文エラー)
コンパイル(gccなど)時に発生するエラーです。
文法ミス・スペルミス・定義漏れなどが原因になります。
// 例:セミコロン忘れ
int main() {
printf("Hello, world!") // ← セミコロン(;)がない!
return 0;
}
error: expected ‘;’ before ‘return’
のようなメッセージ
- 指摘された行の前後をよく確認しましょう
2. リンクエラー(未定義エラー)
複数ファイルやライブラリを使うとき、関数の定義が見つからないときに出るエラーです。
// main.c
int main() {
greet(); // 定義がない!
}
undefined reference to 'greet'
というエラーが出る
- 関数が定義されたファイルのリンク忘れや、宣言ミスが原因
3. 実行時エラー
コンパイルは通っても、実行中にクラッシュや不正な動作が起きるエラーです。
// 例:ゼロ除算
int a = 10;
int b = 0;
int c = a / b; // 実行時にクラッシュ
- ゼロ除算、NULLポインタ参照、配列の範囲外アクセスなどが原因
- 条件分岐で防げるかを考えてコードを書きましょう
4. 警告(warning)
コンパイルは通るけれど、将来的に問題を起こしそうな書き方をしたときに出る通知です。
// 例:戻り値が使われていない
int getValue() {
return 42;
}
int main() {
getValue(); // 戻り値を使っていない
}
warning: ignoring return value of ‘getValue’
などが表示される
- 警告も放置せず、修正する癖をつけると実力アップ!
5. gccで警告を表示させるには?
gcc -Wall program.c -o program
-Wall
オプションをつけることで、すべての警告を表示できます。
初心者の方には必須オプションです。
まとめ
C言語での開発では、エラーは学習のチャンス!
よくあるエラーを知っておけば、原因の特定や修正もスムーズになります。
特にコンパイルエラーと実行時エラーの違いを意識しながら、一つずつ丁寧に対処していきましょう!