Avertissement C26819
Procédure pas à pas non annotée entre les étiquettes de commutateur (es.78).
Notes
Cette case activée couvre les instructions switch implicites. La procédure pas à pas implicite est lorsque le flux de contrôle transfère directement d’un cas de commutateur directement dans un cas de commutateur suivant sans utiliser l’instruction [[fallthrough]];
. Cet avertissement est déclenché lorsqu’une erreur implicite est détectée dans un cas de commutateur contenant au moins une instruction.
Pour plus d’informations, consultez ES.78 : Ne vous fiez pas aux instructions implicites dans switch
les instructions des instructions de base C++.
Exemple
Dans cet exemple, la procédure pas à pas implicite se produit d’une erreur switch
case
nulle dans un code suivant 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;
}
}
Pour résoudre ce problème, insérez une [[fallthrough]];
instruction dans laquelle la procédure de secours se produit.
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;
}
}
Une autre façon de résoudre le problème consiste à supprimer la procédure de secours implicite.
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;
}
}
Voir aussi
ES.78 : Ne vous fiez pas à la procédure de secours implicite dans switch
les instructions
Commentaires
https://aka.ms/ContentUserFeedback.
Prochainement : Tout au long de l'année 2024, nous supprimerons progressivement les GitHub Issues en tant que mécanisme de retour d'information pour le contenu et nous les remplacerons par un nouveau système de retour d'information. Pour plus d’informations, voir:Soumettre et afficher des commentaires pour