2010-06-14 66 views
3

奇怪:爲什麼我無法在開關塊中創建變量?

switch(type) { 
    case NSFetchedResultsChangeInsert: 
     int x = 5; // error: "Expected expression before int" 

     break; 
} 

所以這是不可能的創建在的switch-case-塊的局部變量?

+0

可能重複[我可以聲明一個Objective-C開關語句中的變量?(http://stackoverflow.com/questions/1115304/can-i-declare-variables-inside-an-objective- c-switch-statement) – 2010-06-14 20:24:49

+0

如果你把這種情況變成一個實際的塊,它會工作嗎?就像'case foo:{int x = 5; ''?請記住,C中的switch/case只是圍繞幾個跳轉目標的一個薄薄的包裝,沒有別的。這就是爲什麼達夫的設備非常巧妙。 – Joey 2010-06-14 20:25:02

回答

12

您是否嘗試添加大括號?

switch(type) { 
    case NSFetchedResultsChangeInsert: 
     { 
      int x = 5; // error: "Expected expression before int" 

      break; 
     } 
} 
+0

您需要聲明一個新的範圍出於某種原因。我的C不夠好知道。 – 2010-06-14 20:29:23

+0

這是C標準的一個奇怪之處。有一些奇怪的語法邊緣情況[我永遠遇到]阻止編譯器「正常工作」。 – bbum 2010-06-14 22:01:22

相關問題