我正在使用Visual Studio并收到错误C2360:在编译以下代码(简化)时,“case”标签跳过初始化'p':
case 1:
static char*p[] =
{
"000000000",
"111111111",
"222222222",
"333333333",
"444444444",
};
...
break;
case 2: // error C2360
....
据我所知,STATIC局部变量与全局变量完全相同,只是它只对声明它的函数可见。这意味着它的初始化早在 main 功能尚未开始执行时就已完成。因此,在我看来,不可能跳过'p'的初始化。
我是对的吗?为什么我收到编译错误?
答案 0 :(得分:0)
根据MSDN page:
“你不能跳过一个带有初始化器的声明,除非 声明附在一个区块内。“
因此解决问题的方法是:
case 1:
{
static char*p[] =
{
"000000000",
"111111111",
"222222222",
"333333333",
"444444444",
};
// ... code that uses p
}
break;