こんにちは,エラーのある世界(0)のhello.cについて,5行目すなわち(インデントを除いて)printfから始まる行の末尾のセミコロンを取り除き,hello1.cという名前で保存しておきます.このファイルをコンパイルすると,エラーになります.
コマンドは:
$ cat hello1.c #include <stdio.h> int main(void) { printf("hello, world\n") return 0; } $ cc hello1.c hello1.c: In function ‘main’: hello1.c:7:3: error: expected ‘;’ before ‘return’ return 0; ^~~~~~
実行環境1では:
実行環境2では:
エラーメッセージのうち,もっとも大事なのは,「hello1.c:7:3: error: expected ‘;’ before ‘return’」の行です.上に書いたとおり(またはhello.cとhello1.cを比較して分かるように),セミコロンは5行目の末尾につけるのが自然ですが,Cのコンパイラは,7行目の「return」の単語を見て,そこで「このreturnより前にセミコロンが必要(expected ‘;’ before ‘return’)」というメッセージを出しています.
「hello1.c:7:3」は,ファイル名はhello1.c,行番号は7行目,列位置は3文字目というのを表します.エラー箇所の特定に,この情報が活用できることもありますが,セミコロンがないというエラーに関しては,「7行目・3番目」のreturnではなく,それより前の文が原因となるのには,注意しないといけません.