最近更新于 2023-01-28 17:33

遇到这个问题通常是在 switch-case 中,如果在 case 语句中有定义变量,那么就要给这个 case 语句下加上大括号,否则就会出现“声明不能包含标签”的错误。

比如下面的情况就会出现这种错误

switch (a)
{
    case 1:
        int a = 0;
        ...
        break;
    ...
    default:
        ...
        break;
}

解决改为下面的就行

switch (a)
{
    case 1:
    {
        int a = 0;
        ...
        break;
    }
    ...
    default:
        ...
        break;
}

以前我最开始学习 C 语言的时候应该就遇到过这种情况,后面发现加大括号就没问题了,但是并没有发现本质错误所在,之后就全部 case 语句都加上大括号。现在差不多间隔一年没写 C 了,就懒得打大括号了,写了几天又碰到这种情况,查了一下才知道定义变量了就要加大括号,这里就顺便写了一下做个记录。

作者 IYATT-yx