我使用的Objective-C對象時switch語句中得到一個編譯錯誤對象 - 對象:奇編譯器錯誤時使用switch語句
switch (myConstant)
{
case 0:
UIViewController *myController = [[[UIViewController alloc] init] autorelease];
[self.navigationController pushViewController:myViewController animated:YES];
break;
case 1:
// stuff
break;
default:
break;
}
的錯誤狀態:
Expected expression before 'UIViewController'
'myViewController' undeclared (first use in this function)
我知道第二個錯誤是第一個錯誤的直接結果,但我不明白爲什麼我首先得到'預期表達式'錯誤...
如果我把;
在case 0:
行的末尾,那麼它會編譯,但我不應該這樣做,不是嗎?
這也將無法被編譯,用相同的錯誤:
switch (0)
{
case 0:
int a = 0;
break;
default:
break;
}
然而,如果我宣佈int a;
外部的開關組,那麼a = 0;
編譯罰款。
我以爲我明白了switch語句 - 顯然我不知道。有人能解釋一下嗎?
您應該購買一本關於C語言的書。交換機內部的情況必須跟着一個聲明。你跟着它的聲明,這不是一個聲明。一個 」;」本身就是一個空洞的陳述。除了最簡單的情況外,最好總是使用複合語句{...}。 – gnasher729 2014-06-20 09:45:27
@ gnasher729謝謝你讓我知道這4年後;) – Jasarien 2014-06-26 13:13:08