ページ 11

C言語のgoto文でerror: label at end of compound statement

Posted: 2016年8月28日(日) 03:30
by helloworld
よろしくお願いします。
C言語でgoto文を使うことは外道だと言われてしまいそうですが、
goto文を使った基本的なプログラムを作成したのですが、
エラーメッセージが出てしまします。
このエラーはどういった意味でしょうか?
また、コードを書き直してもらえませんか?
C言語です。C++ではないです。
よろしくお願いします。

コード:

 
#include <stdio.h>↲                                                                                                                         
↲
int main(void) {↲
    int n;↲
    printf(">");↲
    scanf("%d",&n);↲
    if ( n == 0 ) {↲
        goto R;↲
    }↲
    printf("ok\n");↲
    R:↲
 }
 

エラーメッセージ:
error: label at end of compound statement

Re: C言語のgoto文でerror: label at end of compound statement

Posted: 2016年8月28日(日) 03:45
by label
ブロックの最後の行にラベルをおいてはいけないのかと。
仕様はめんどくさいので探していません。

Re: C言語のgoto文でerror: label at end of compound statement

Posted: 2016年8月28日(日) 03:56
by hide
名前が質問内容につられてしまう痛恨のミス。
上の回答は hide のものです。

ちなみに、なるべくそのままでそのプログラムを動かすとしたら、
ラベルの下で return 0; でもするか、gotoは忘れましょう。

Re: C言語のgoto文でerror: label at end of compound statement

Posted: 2016年8月28日(日) 04:06
by helloworld
皆様、ご回答いただきありがとうございました‼
R:
の行の下に
return 0;
を付け加えたらコンパイルできました‼
お恥ずかしいです。

勉強になりました。
今後も初歩的なことで質問をしてご迷惑をおかけするかもしれませんが、
何卒よろしくお願いします。
本当にありがとうございました‼