ページ 11

VC++2008 continue 指定

Posted: 2012年11月13日(火) 15:06
by 文法えらー
VC++2008 64bit 環境でプログラミングしているものです.
continue文は多重ループ時にラベルを用いて何処からcontinueする指定出来るらしいのですが・・・.

コード:

for(int c = 0; c<10; c++){
    TEST_LOOP: for(int b = 0; b<10; b++){
        for(int a = 0; a<10; a++){
            puts("test");
            if(a == 5) continue TEST_LOOP;
        }
    }
}
以上のようなプログラムをコンパイルすると 以下のように文法エラーを指摘されます.
どうすれば使えますか?

error C2146: 構文エラー : ';' が、識別子 'TEST_LOOP' の前に必要です。
error C2065: 'TEST_LOOP' : 定義されていない識別子です。

Re: VC++2008 continue 指定

Posted: 2012年11月13日(火) 15:26
by YuO
文法えらー さんが書きました:VC++2008 64bit 環境でプログラミングしているものです.
continue文は多重ループ時にラベルを用いて何処からcontinueする指定出来るらしいのですが・・・.
それはJavaの話ではないですか。
C++にそのような機能はありませんし,MSDNにもそのような記述はありません。

代替するなら,continue対象としたい繰り返し文の複文の末尾にラベルと;を書き,gotoで飛ばします。
以下,部分的に書き換えた例です。

コード:

for(int c = 0; c<10; c++){
    for(int b = 0; b<10; b++){
        for(int a = 0; a<10; a++){
            puts("test");
            if(a == 5) goto TEST_LOOP;
        }
    TEST_LOOP: 
        ;
    }
}

Re: VC++2008 continue 指定

Posted: 2012年11月13日(火) 17:26
by オカピーα
文法えらー さんが書きました:VC++2008 64bit 環境でプログラミングしているものです.
continue文は多重ループ時にラベルを用いて何処からcontinueする指定出来るらしいのですが・・・.

コード:

for(int c = 0; c<10; c++){
    TEST_LOOP: for(int b = 0; b<10; b++){
        for(int a = 0; a<10; a++){
            puts("test");
            if(a == 5) continue TEST_LOOP;
        }
    }
}
以上のようなプログラムをコンパイルすると 以下のように文法エラーを指摘されます.
どうすれば使えますか?

error C2146: 構文エラー : ';' が、識別子 'TEST_LOOP' の前に必要です。
error C2065: 'TEST_LOOP' : 定義されていない識別子です。

error C2065: 'TEST_LOOP' : 定義されていない識別子です。

このエラーは単に「TEST_LOOP」が定義されていないというだけの話です。
cppファイルでもhファイルでも何でも良いのでTEST_LOOPを定義しましょう。
#defineがおすすめです。

Re: VC++2008 continue 指定

Posted: 2012年11月13日(火) 17:35
by softya(ソフト屋)
ラベル付き continueはC++には無いです。
javaなどにはあります。

Re: VC++2008 continue 指定

Posted: 2012年11月13日(火) 18:47
by 文法えらー
回答有難うございました.
C,C++では使えないんですかね・・・.
YuOさんが示したようにGOTO文で代用することにします.

Re: VC++2008 continue 指定

Posted: 2012年11月13日(火) 19:11
by non
GOTOを使わなければいけない理由はなんですか?