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

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