わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

こんにちは,エラーのある世界 (1)セミコロンがなかったら

こんにちは,エラーのある世界(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ではなく,それより前の文が原因となるのには,注意しないといけません.