C attribute: fallthrough (since C23)
Указывает, что переход к следующей метке case из предыдущей является преднамеренным и не должен диагностироваться компилятором, который выдает предупреждения о сквозном выполнении.
Содержание |
Синтаксис
[[
fallthrough
]]
[[
__fallthrough__
]]
|
|||||||||
`, которые согласно инструкциям не подлежат переводу. Поэтому перевод не требуется, исходный формат полностью сохранен.
Объяснение
Может использоваться только в объявлении атрибутов для создания объявления 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: // нет предупреждения о сквозном выполнении h(); case 4: // компилятор может выдать предупреждение о сквозном выполнении if(n < 3) { i(); [[fallthrough]]; // OK } else { return; } case 5: while (false) { [[fallthrough]]; // некорректно: нет последующей метки case или default } case 6: [[fallthrough]]; // некорректно: нет последующей метки case или default } } int main(void) {}
Смотрите также
|
C++ документация
для
fallthrough
|