Advertencia C26819
Caída sin anotar entre etiquetas de cambio (es.78).
Comentarios
Esta comprobación abarca la caída implícita en las instrucciones de cambio. La caída implícita se produce cuando el flujo de control transfiere de un caso de cambio directamente al siguiente caso de cambio sin el uso de la instrucción [[fallthrough]];
. Esta advertencia se genera cuando se detecta una caída implícita en un caso de cambio que contiene al menos una instrucción.
Para más información, consulte ES.78: No confiar en la caída implícita de las instrucciones switch
en C++ Core Guidelines.
Ejemplo
En este ejemplo, se produce un error implícito de un noempty switch
case
en un siguiente case
.
void fn1();
void fn2();
void foo(int a)
{
switch (a)
{
case 0: // implicit fallthrough from case 0 to case 1 is OK because case 0 is empty
case 1:
fn1(); // implicit fallthrough from case 1 into case 2
case 2: // Warning C26819.
fn2();
break;
default:
break;
}
}
Para corregir este problema, inserte una instrucción [[fallthrough]];
en la que se produzca la caída.
void fn1();
void fn2();
void foo(int a)
{
switch (a)
{
case 0:
case 1:
fn1();
[[fallthrough]]; // fallthrough is explicit
case 2:
fn2();
break;
default:
break;
}
}
Otra manera de corregir el problema es quitar la caída implícita.
void fn1();
void fn2();
void foo(int a)
{
switch (a)
{
case 0:
case 1:
fn1();
break; // case 1 no longer falls through into case 2
case 2:
fn2();
break;
default:
break;
}
}
Consulte también
ES.78: No confiar en la obtención implícita de switch
instrucciones
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de