Предупреждение C6259
Помеченный код недоступен: ("expression" и "constant") в switch-expr не может оцениваться как "case-label"
Замечания
Это предупреждение указывает неустранимый код, вызванный результатом побитового сравнения и (&
) в выражении коммутатора. Доступно только оператор case, соответствующий константе в выражении коммутатора; все остальные операторы регистра недоступны.
Имя анализа кода: DEADCODEINBITORLIMITEDSWITCH
Пример
Следующий пример кода создает это предупреждение, так как выражение (rand() & 3)
switch не может оценить метку регистра (case 4
):
#include <stdlib.h>
void f()
{
switch (rand () & 3) {
case 3:
/* Reachable */
break;
case 4:
/* Not reachable */
break;
default:
break;
}
}
Чтобы исправить это предупреждение, удалите недоступный код или убедитесь, что константа, используемая в инструкции case, правильна. Следующий код удаляет неустранимую инструкцию регистра:
#include <stdlib.h>
void f()
{
switch (rand () & 3) {
case 3:
/* Reachable */
break;
default:
break;
}
}
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по