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;
}
}