Namespaces
Variants

C attribute: fallthrough (since C23)

From cppreference.net

Gibt an, dass das Fallthrough vom vorherigen Case-Label beabsichtigt ist und nicht von einem Compiler diagnostiziert werden sollte, der vor Fallthrough warnt.

Inhaltsverzeichnis

Syntax

[[ fallthrough ]]
[[ __fallthrough__ ]]

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 zu verarbeitende Blockelement (Anweisung, Deklaration oder Label) eine Anweisung mit einem case - oder default -Label für diese switch-Anweisung sein muss.

Gibt an, dass das Fallthrough vom vorherigen Case-Label beabsichtigt ist und nicht von einem Compiler diagnostiziert werden sollte, der vor Fallthrough warnt.

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: // keine Warnung bei Fallthrough
      h();
    case 4: // Compiler kann bei Fallthrough warnen
      if(n < 3) {
          i();
          [[fallthrough]]; // OK
      }
      else {
          return;
      }
    case 5:
      while (false) {
        [[fallthrough]]; // ungültig: kein nachfolgender Case- oder Default-Label
      }
    case 6:
      [[fallthrough]]; // ungültig: kein nachfolgender Case- oder Default-Label
  }
}
int main(void) {}

Siehe auch

C++ Dokumentation für fallthrough