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