mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-06-21 05:26:03 +00:00
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).
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.
|
||
|---|---|---|
| .. | ||
| aaudio | ||
| alsa | ||
| android | ||
| arts | ||
| coreaudio | ||
| directsound | ||
| disk | ||
| dsp | ||
| dummy | ||
| emscripten | ||
| esd | ||
| fusionsound | ||
| haiku | ||
| jack | ||
| nacl | ||
| nas | ||
| netbsd | ||
| openslES | ||
| os2 | ||
| paudio | ||
| pipewire | ||
| psp | ||
| pulseaudio | ||
| qsa | ||
| sndio | ||
| sun | ||
| vita | ||
| wasapi | ||
| winmm | ||
| SDL_audio.c | ||
| SDL_audio_c.h | ||
| SDL_audiocvt.c | ||
| SDL_audiodev.c | ||
| SDL_audiodev_c.h | ||
| SDL_audiotypecvt.c | ||
| SDL_mixer.c | ||
| SDL_sysaudio.h | ||
| SDL_wave.c | ||
| SDL_wave.h | ||