• Show log

    Commit

  • Hash : 3bf7994f
    Author : Misa
    Date : 2021-09-27T14:38:12

    Add and use `SDL_FALLTHROUGH` for fallthroughs
    
    Case fallthrough warnings can be suppressed using the __fallthrough__
    compiler attribute. Unfortunately, not all compilers have this
    attribute, or even have __has_attribute to check if they have the
    __fallthrough__ attribute. [[fallthrough]] is also available in C++17
    and the next C2x, but not everyone uses C++17 or C2x.
    
    So define the SDL_FALLTHROUGH macro to deal with those problems - if we
    are using C++17 or C2x, it expands to [[fallthrough]]; else if the
    compiler has __has_attribute and has the __fallthrough__ attribute, then
    it expands to __attribute__((__fallthrough__)); else it expands to an
    empty statement, with a /* fallthrough */ comment (it's a do {} while
    (0) statement, because users of this macro need to use a semicolon,
    because [[fallthrough]] and __attribute__((__fallthrough__)) require a
    semicolon).
    
    Clang before Clang 10 and GCC before GCC 7 have problems with using
    __attribute__ as a sole statement and warn about a "declaration not
    declaring anything", so fall back to using the /* fallthrough */ comment
    if we are using those older compiler versions.
    
    Applications using SDL are also free to use this macro (because it is
    defined in begin_code.h).
    
    All existing /* fallthrough */ comments have been replaced with this
    macro. Some of them were unnecessary because they were the last case in
    a switch; using SDL_FALLTHROUGH in those cases would result in a compile
    error on compilers that support __fallthrough__, for having a
    __attribute__((__fallthrough__)) statement that didn't immediately
    precede a case label.
    

  • Properties

  • Git HTTP https://git.kmx.io/kc3-lang/SDL.git
    Git SSH git@git.kmx.io:kc3-lang/SDL.git
    Public access ? public
    Description

    Fork of https://github.com/libsdl-org/SDL

    Users
    thodg_w kc3_lang_org thodg_l thodg_m www_kmx_io thodg
    Tags