qt switch報錯jump to case label [-fpermissive]

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前面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章