AI AIワークナビ AI Work Studio
メニュー
AIワークナビ ホーム

C言語のexpected ‘;’ beforeを直す|セミコロン不足の見つけ方

C言語を実行したとき、error: expected ';' before 'return' と表示されることがあります。これは多くの場合、エラーが示す行そのものではなく、その1つ前の行にセミコロンがないことが原因です。この記事では、同じコードをGCCとAI Work Studioで実行し、エラーの見方から修正後の出力まで確認します。

結論

expected ';' before が出たら、表示された単語の直前だけでなく、1つ前の文の末尾を確認します。今回のコードでは、return の前にある printf の末尾へセミコロンを追加すれば直ります。

printf("OK\n");

発生している問題

次のプログラムは、画面に OK と表示するだけの短い例です。しかし、printf("OK\n") の末尾にセミコロンがありません。

修正前コード

#include <stdio.h>

int main() {
    printf("OK\n")
    return 0;
}

GCC 16.1.0では、次のエラーになりました。

<stdin>: In function 'main':
<stdin>:4:19: error: expected ';' before 'return'

AI Work Studioでは、5行目の5文字目で解析に失敗し、期待している記号の一覧に ";" が含まれる構文解析エラーになりました。

ERROR: Parsing Failure: line 5 (column 5): printf("OK\\n")\n return 0;\n} -----------------------------------------^ Expected "!=", "%", "%=", "&", "&&", "&=", "(", "*", "*=", "+", "++", "+=", ",", "-", "--", "-=", "->", ".", "/", "/*", "//", "/=", ";", "<", "<<", "<<=", "<=", "=", "==", ">", ">=", ">>", ">>=", "?", "[", "^", "^=", "|", "|=", "||" or [ \n\r\t\u000B\u000C] but "r" found.

原因

C言語では、printf のような関数呼び出しを1つの文として書くとき、末尾をセミコロンで区切ります。セミコロンがないと、コンパイラは次の return まで読んでから「ここにはセミコロンが必要だった」と判断します。そのため、エラーは5行目の return を指していても、実際に直す場所は4行目の末尾です。

GCC公式マニュアルでも、エラーには問題が明らかになったソース位置が表示されると説明されています。エラー位置は重要な手掛かりですが、必ずしも入力ミスそのものの位置とは限りません。

修正後コード

4行目の printf("OK\n") の後ろへセミコロンを追加します。変更はこの1文字だけです。

#include <stdio.h>

int main() {
    printf("OK\n");
    return 0;
}

実行結果

修正後はGCCとAI Work Studioの両方で正常終了し、標準出力は次の1行で一致しました。

OK

AI Work StudioのConsoleには、出力の後に 終了コード: 0 も表示されます。これはプログラムがエラーなく終了したことを表します。標準入力は使わず、Previewには表示する内容がありません。

よくある間違い

returnの後ろだけを確認する

エラー文に before 'return' とあるため、return 0; を何度も直したくなります。しかし今回の return 0; には、すでにセミコロンがあります。1つ前の printf を確認してください。

波括弧の後ろへセミコロンを付ける

関数を閉じる } の後ろへセミコロンを追加しても、printf の文は完成しません。エラーの直前にある、セミコロンで終わるべき文へ追加します。

エラー行だけを見る

コンパイラはコードを上から読んで、続きが解釈できなくなった場所で止まります。表示された行と、その1〜2行前をセットで確認すると、原因を見つけやすくなります。

AI Work Studioで試す手順

  1. AI Work Studioを開きます。
  2. C / C++ タブを選びます。
  3. 修正前コードを貼り付け、「C/C++を実行」を押します。
  4. Consoleの構文解析エラーに ";" が含まれることを確認します。
  5. printf("OK\n"); と修正して、もう一度実行します。
  6. Consoleに OK終了コード: 0 が表示されれば成功です。

現在のAI Work Studioでは、この例は int main() の形で実行します。標準入力欄は空のままで問題ありません。

まとめ

expected ';' before は、直前の文にセミコロンがないときに起きやすいコンパイルエラーです。エラーが return を指していても、1つ前の行を確認してください。今回のように、セミコロン1文字を追加するだけで正常に実行できます。

関連記事