Namensräume
Varianten
Aktionen

C-Attribut: fallthrough (seit C23)

Von cppreference.com
< c‎ | Sprache‎ | Attribute

Zeigt an, dass der Durchfall aus dem vorherigen Case-Label beabsichtigt ist und von einem Compiler, der auf Durchfall warnt, nicht diagnostiziert werden sollte.

Inhalt

[bearbeiten] Syntax

[[ fallthrough ]]
[[ __fallthrough__ ]]

[bearbeiten] Erklärung

Darf nur in einer Attributdeklaration verwendet werden, um eine Fallthrough-Deklaration zu erstellen ([[fallthrough]];).

Eine Fallthrough-Deklaration darf nur in einer switch-Anweisung verwendet werden, wobei das nächste Element (Anweisung, Deklaration oder Label) eine Anweisung mit einem case- oder default-Label für diese switch-Anweisung ist.

Zeigt an, dass der Durchfall aus dem vorherigen Case-Label beabsichtigt ist und von einem Compiler, der auf Durchfall warnt, nicht diagnostiziert werden sollte.

[bearbeiten] Beispiel

#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: // no warning on fallthrough
      h();
    case 4: // compiler may warn on fallthrough
      if(n < 3) {
          i();
          [[fallthrough]]; // OK
      }
      else {
          return;
      }
    case 5:
      while (false) {
        [[fallthrough]]; // ill-formed: no subsequent case or default label
      }
    case 6:
      [[fallthrough]]; // ill-formed: no subsequent case or default label
  }
}
 
int main(void) {}

[bearbeiten] Siehe auch

C++-Dokumentation für fallthrough