C6259

警告 C6259:无法访问带标签的代码: switch 表达式中的(<expression> & <constant>)不能计算为 <case-label>

此警告意味着 switch 表达式中的按位与 (&) 比较的结果导致无法访问代码。 只能访问与 switch 表达式中的常数匹配的 case 语句,而无法访问其他所有 case 语句。

示例

在下面的代码示例中,因为 switch (rand() & 3) 表达式的计算结果不能为 case 标签 (case 4),所以会生成此警告:

#include <stdlib.h>

void f()
{
     switch (rand () & 3) {
        case 3:
            /* Reachable */
            break;
        case 4:
            /* Not reachable */
            break;
        default:
            break;
    }
}

若要更正此警告,请移除无法访问的代码,或者确认在 case 语句中使用的常数正确无误。 下面的代码移除无法访问的 case 语句:

#include <stdlib.h>

void f()
{
     switch (rand () & 3) {
        case 3:
            /* Reachable */
            break;
        default:
            break;
    }
}

请参见

参考

switch Statement (C++)

switch Statement (C)