2011-10-16 175 views

回答

2

這不是一個switch語句錯誤,它是C語言中的一個限制。在C中,case標籤之後的第一條語句不能是變量聲明。您可以通過在switch語句之前聲明變量或在代碼塊內創建變量來解決此問題(請參見下文)。顯然,你也可以重新排序你的代碼(如果可能的話),以便在變量聲明之前出現另一個語句。

實施例1:

CGRect newRect = CGRectZero; 
switch(var) { 
    case 0: 
    // do some stuff 
    break; 
    case 1: 
    default: 
    newRect = [someVar someMethodThatReturnsARect]; 
    // other code 
    break; 
} 

實施例2:

switch(var) { 
    case 0: 
    // do some stuff 
    break; 
    case 1: 
    default: { 
    CGRect newRect = [someVar someMethodThatReturnsARect]; 
    // other code 
    break; 
    } 
} 

實施例3:

switch(var) { 
    case 0: 
    // do some stuff 
    break; 
    case 1: 
    default: 
    // some code re-ordered to here 
    CGRect newRect = [someVar someMethodThatReturnsARect]; 
    // rest of the other code 
    break; 
}