switch 注意事項
switch(iEventID)
{
case ON_ID:
int nCount = 0;
break;
default:
break;
}
這樣寫在QT上會報錯 jump to case label [-fpermissive]
visual studio 2017 會報錯 “default”標籤跳過“nCount”的初始化操作
QT的報錯比較費解,vs2017的報錯比較容易理解。
原因是在switch作用域中聲明瞭變量。
解決方案是在給case裏的代碼加上括號,改變case內部代碼的作用域。
switch(iEventID)
{
case ON_ID:
{
int nCount = 0;
break;
}
default:
break;
}
還有另一種方案就是將定義都移動到switch前面。