Namespaces
Variants

C attribute: fallthrough (since C23)

From cppreference.net

Indique que la chute depuis l'étiquette de cas précédente est intentionnelle et ne devrait pas être diagnostiquée par un compilateur qui avertit sur les chutes.

Table des matières

Syntaxe

[[ fallthrough ]]
[[ __fallthrough__ ]]

Explication

Ne peut être utilisé que dans une déclaration d'attribut pour créer une déclaration fallthrough ( [ [ fallthrough ] ] ; ).

Une déclaration fallthrough ne peut être utilisée que dans une switch , où le prochain élément de bloc (instruction, déclaration ou étiquette) rencontré est une instruction avec une étiquette case ou default pour cette instruction switch.

Indique que la chute depuis l'étiquette de cas précédente est intentionnelle et ne devrait pas être diagnostiquée par un compilateur qui avertit sur les chutes.

Exemple

#include <stdbool.h>
void g(void) {}
void h(void) {}
void i(void) {}
void f(int n) {
  switch (n) {
    case 1:
    case 2:
      g();
     [[fallthrough]];
    case 3: // aucun avertissement sur le fallthrough
      h();
    case 4: // le compilateur peut avertir sur le fallthrough
      if(n < 3) {
          i();
          [[fallthrough]]; // OK
      }
      else {
          return;
      }
    case 5:
      while (false) {
        [[fallthrough]]; // incorrect : aucun label case ou default suivant
      }
    case 6:
      [[fallthrough]]; // incorrect : aucun label case ou default suivant
  }
}
int main(void) {}

Voir aussi

Documentation C++ pour fallthrough