Spec-Zone.ru › C

Атрибут C: fallthrough (с C23)

Указывает, что переход к следующему метке case является преднамеренным и не должен вызывать диагностику компилятором, который предупреждает о переходе.

Синтаксис

[[ fallthrough ]]
[[ __fallthrough__ ]]

Объяснение

Может быть использован только в объявлении атрибута для создания объявления перехода ([[fallthrough]];).

Объявление перехода может быть использовано только в операторе switch, где следующий элемент блока (оператор, объявление или метка) является оператором со меткой case или default для этого оператора switch.

Указывает, что переход к следующему метке case является преднамеренным и не должен вызывать диагностику компилятором, который предупреждает о переходе.

Пример

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

См. также

Документация C++ по fallthrough

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/language/attributes/fallthrough

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API