Namespaces
Variants

C attribute: fallthrough (since C23)

From cppreference.net

Indica que la caída desde la etiqueta de caso anterior es intencional y no debe ser diagnosticada por un compilador que advierte sobre caídas.

Contenidos

Sintaxis

[[ fallthrough ]]
[[ __fallthrough__ ]]

Explicación

Solo puede utilizarse en una declaración de atributo para crear una declaración de continuación ( [ [ fallthrough ] ] ; ).

Una declaración fallthrough solo puede ser utilizada en una switch sentencia, donde el siguiente elemento de bloque (sentencia, declaración o etiqueta) a encontrar es una sentencia con una etiqueta case o default para esa sentencia switch.

Indica que la caída desde la etiqueta de caso anterior es intencional y no debe ser diagnosticada por un compilador que advierte sobre caídas.

Ejemplo

#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) {}

Véase también

Documentación de C++ para fallthrough