fc2ブログ

Unknown Material

30分で書けること。

2008/06/29   エラーを考える : Unknown式C言語入門


今回はコンパイルエラーについてです。
プログラムを書いてみてコンパイル・実行してみると、
結構な頻度でエラーが発生してしまいます。
C言語の場合、1箇所間違った部分があると、何十という数のエラーが出たりします。
慣れないうちはちょっとした恐怖のように感じるかもしれません。
しかし、何処が悪いのか・どう直せばいいのかが分かれば大丈夫です。
エラーについて詳しく見ていきましょう。


-- ◇ エラーを考える の続き --

エラーとして出されるメッセージは色々あります。
ここではよくあるエラーと間違い易い箇所について紹介します。
なおここでのエラー文は、Cプログラム環境導入の記事でも紹介した
Borland製のコンパイラーでコンパイルした時のものです。

まずはエラー文の見方から。
エラー E2206 test.c 1: 不正な文字 '' (0xfe)エラー
まず、「エラー」か「警告」かどうかが示されます。
エラーは文字通りエラーで、これが原因でコンパイルが失敗したことを示します。
つまりこれを直さない限りプログラムを実行できません。
警告については、出来上がるプログラムの挙動が怪しくなりそうな時に表示されます。
警告が出たままでもコンパイルは通り、実行可能です。
しかし、意図していない限り、警告が出ている部分も直した方がいいです。
次に「エラー番号」と「コンパイルしたファイル名」が表示されます。
ここはファイル名が「~.c」となっている事だけを確認すればOKです。
そして「エラー行」と「エラー内容」が表示されます。
上から数えて何行目にどんなエラーがあったのかが表示されます。

では具体的なエラーについて見ていきます。
ちなみに、エラー文に関しては、上から順番に直していってください。
先にも言った通り、上の行で発生したエラーが元で、
下の部分に影響を及ぼしている場合がありますので、下から直すのは無意味です。

エラー E2206 test.c 1: 不正な文字 '' (0xfe)
このエラーは1行目にコンパイラーが認識しない文字が入っている事を意味します。
しかし、一行目はちゃんと#include <stdio>となっており、
変な文字も入れていないという場合があるかもしれません。
この場合、文字コードが間違っている可能性が大きいです。
文字コードを「SHIFT-JIS」として保存してからコンパイルすれば直ります。

エラー E2209 test.c 1: インクルードファイル 'stdio.h' をオープンできない
同じく1行目に起こるエラーです。
スペルミスがなければコンパイラーの設定が間違っている可能性があります。
コンパイラーの導入時の設定を見直してください。

エラー E2206 test.c 5: 不正な文字 ' ' (0x8140)(関数 main )
さっきのエラーに似てますが、今度は1行目ではありません。
これは全角スペースが入っていることが原因です。
このブログに書いてあるコードをそのままコピーして実行すると
このエラーが出てしまうと思います。
(今コピペしてもエラーなしに使えるよう対策を考えています。)
インテンド(字下げ)として使っている全角スペースを削除して、
Tabまたは半角スペースで置き換えれば直ります。

エラー E2379 test.c 6: ステートメントにセミコロン(;)がない(関数 main )
そのまんまのエラーです。文末にセミコロンが抜けています。

エラー E2141 test.c 5: 宣言の構文エラー(関数 main )
宣言文、つまりint a,b;みたいな文でのエラーです。
多くの場合aとbの間の記号のコロン(,)が間違っていたり、
文末のセミコロンが抜けていたりします。

エラー E2134 test.c 6: 複合文に } がない(関数 main )
括弧の対応があっていないとこういったエラーが出ます。
括弧の始まりと終わりが合うように直してください。

エラー E2451 test.c 5: 未定義のシンボル a(関数 main )
「a」という変数が宣言されていないことを意味するエラーです。
「a」が出てくるより上の行でint a;のようなaの宣言を行ってください。

警告 W8070 test.c 7: 関数は値を返すべき(関数 main )
return 0;
を抜かすとこのような警告が出ます。

ここに挙げたエラー例はごくごく一部です。
必要に応じて他のエラー例も紹介していきますが、全てではありません。
エラーの発生原因の主たるものは、
 スペルミス
 セミコロン忘れ
 括弧の不対応
 初期化し忘れ(※)
 配列オーバー(※)
 ポインタの誤用(※)
 (※についてはまだやってません)
ですので、よく分からないエラーが出た時は、まずミスがないかを見直してみましょう。

スポンサーサイト




コメント

ナビゲーション

カテゴリー
 ライトノベル関連 (54)
 漫画・アニメ関連 (1)
 コンピューター関連 (29)
 テンプレート (5)
 Unknown式C言語入門 (9)
 大学生活・雑記 (35)
 製品レビュー (2)
  →  このブログについて
  → 過去レビュー 一覧
アクセス数
   

プロフィール

  プロフィール画像(レニウム)
 ◇ レニウム
   詳しく見る。

相互リンク

マクロミルへ登録