2005年度の授業は終りました。 この授業のページは参照用の資料として保存しているものです。最新の情報・資料は 江上の授業ページで。
[Back]  -    [EGAMIX トップ] > [授業のページ] > [2005 年度 ソフトウェア実習I] > [ソフトウェア実習I 授業内容]
エラーメッセージの読み方(1)

本学の計算機環境で、前回配布したプリント(P.8) と同じエラーを発生させてみると・・・
 
1) プログラム中に日本語(空白)が入っている場合
 
 
[~]$ pr -n: -t tmp1.c
    1:#include <stdio.h>
    2:
    3:int main(void)
    4:{
    5:  printf("hello, world\n");
    6:}
[~]$ cc tmp1.c
tmp1.c: 関数 `main' の内部:
tmp1.c:5: 文法エラー , 場所は文字 0241 の前
 
tmp1.c:5: 文法エラー , 場所は文字 0241 の前
      ↑      ↑             ↑
  行番号 エラーの種類  エラーの場所
 
       → '0241' 等という4文字の表記が現れた場合には、プログラム中に日本語が含まれている可能性が高い
 
   注意) エラーの場所は"おおよそ"の位置を表していると考えましょう。
                複雑なエラーの場合には、コンピュータは本当のエラーの場所を特定することができません。
 


 
2) プログラムのタイプミス(パターン1: 命令が間違っている場合)
 

 
[~]$ pr -n: -t tmp2.c
    1:#include <stdio.h>
    2:
    3:int main(void)
    4:{
    5:   print("hello, world\n");
    6:}
[~]$ cc tmp2.c
未定義の                         最初に参照している
シンボル                             ファイル
print                               /var/tmp/cchgGzmH.o
ld: 重大なエラー: シンボル参照エラー。a.out に書き込まれる出力はありません。
collect2: ld returned 1 exit status
 
未定義の                         最初に参照している
シンボル                             ファイル
print                               /var/tmp/cchgGzmH.o
  ↑
タイプミスの命令
 
        → 行番号の出力がなく、"未定義シンボル" として出力される文字がプログラム中で使用されている可能性が高い


 
3) プログラムのタイプミス(パターン2: 入力ミス)
 

 
[~]$ pr -n: -t tmp3.c
    1:#include <stdio.h>
    2:
    3:int main(void)
    4:{
    5:   printf("hello, world);
    6:}
[~]$ cc tmp3.c
tmp3.c:5: 文字列・文字定数がとじていません
tmp3.c:5: 多分ここが閉じていない文字列・文字定数のはじまりです
 
tmp3.c:5: 文字列・文字定数がとじていません
       ↑        ↑
     行番号  エラーの種類

 
 
 


(現在の状況を自由に書き込んでください。返事が必要なコメントはメールなどを利用してください。)
一言コメント:
現在の理解度: -2 -1 0 +1 +2
[Back]
Kunihiro Egami <egami@egamix.com>