Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      C++ attribute: fallthrough(since C++17)

      From cppreference.com
      <cpp‎ |language‎ |attributes
       
       
      C++ language
      General topics
      Flow control
      Conditional execution statements
      Iteration statements (loops)
      Jump statements
      Functions
      Function declaration
      Lambda function expression
      inline specifier
      Dynamic exception specifications(until C++17*)
      noexcept specifier(C++11)
      Exceptions
      Namespaces
      Types
      Specifiers
      constexpr(C++11)
      consteval(C++20)
      constinit(C++20)
      Storage duration specifiers
      Initialization
      Expressions
      Alternative representations
      Literals
      Boolean -Integer -Floating-point
      Character -String -nullptr(C++11)
      User-defined(C++11)
      Utilities
      Attributes(C++11)
      Types
      typedef declaration
      Type alias declaration(C++11)
      Casts
      Memory allocation
      Classes
      Class-specific function properties
      Special member functions
      Templates
      Miscellaneous
       
      Declarations
       
      Attributes
      (C++23)
      (C++11)(until C++26)
      (C++14)
      fallthrough
      (C++17)
      (C++20)
      (C++17)
      (C++11)
      (C++20)
       

      Indicates that the fall through from the previous case label is intentional and should not be diagnosed by a compiler that warns on fallthrough.

      Contents

      [edit]Syntax

      [[fallthrough]]

      [edit]Explanation

      May only be applied to anull statement to create afallthrough statement ([[fallthrough]];).

      A fallthrough statement may only be used in aswitch statement, where the next statement to be executed is a statement with a case or default label for that switch statement. If the fallthrough statement is inside a loop, the next (labeled) statement must be part of the same iteration of that loop.

      [edit]Example

      Run this code
      void f(int n){void g(), h(), i(); switch(n){case1:case2:            g();[[fallthrough]];case3:// no warning on fallthrough            h();case4:// compiler may warn on fallthroughif(n<3){                i();[[fallthrough]];// OK}else{return;}case5:while(false){[[fallthrough]];// ill-formed: next statement is not//             part of the same iteration}case6:[[fallthrough]];// ill-formed, no subsequent case or default label}}

      [edit]Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      CWG 2406C++17[[fallthrough]] could appear in a loop
      nested inside the target switch statement
      prohibited

      [edit]References

      • C++23 standard (ISO/IEC 14882:2024):
      • 9.12.6 Fallthrough attribute [dcl.attr.fallthrough]
      • C++20 standard (ISO/IEC 14882:2020):
      • 9.12.5 Fallthrough attribute [dcl.attr.fallthrough]
      • C++17 standard (ISO/IEC 14882:2017):
      • 10.6.5 Fallthrough attribute [dcl.attr.fallthrough]

      [edit]See also

      C documentation forfallthrough
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/language/attributes/fallthrough&oldid=174651"

      [8]ページ先頭

      ©2009-2025 Movatter.jp