ページ 1 / 1
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を使わなければいけない理由はなんですか?