switch( hoge ){
case 0:
int i; // expected expression
break;
}
解決方法は簡単で、case文内でスコープを定義すれば良い。
switch( hoge ){
case 0:
{
int i;
break;
}
}
理由はObjective-C勉強室というサイトに載っていた。以下引用。
古いCの場合、ローカルに新規の変数を使う場合は必ず新しいスコープの先頭(宣言文以外が出てくるまで)に宣言しなければならなかったが、 Objective-Cではこれがかなり緩くなる。本当は最近のCの規格ではそういうものらしい。 ただし、一部例外がある。
(中略)switch文のcase文の直後に宣言するときのみ、新規スコープの宣言が必要
だそうです。
0 件のコメント:
コメントを投稿