Fix FDK_FALLTHROUGH for apple clang

In the apple branded version of clang, the [[clang::fallthrough]]
attribute isn't supported.

Directly exposing __has_cpp_attribute(clang::fallthrough) to the
preprocessor breaks when building in C mode with GCC, which forces
wrapping it in an extra layer of #ifdef __cplusplus.
This commit is contained in:
Martin Storsjo 2019-01-21 16:09:05 +02:00
parent 02103fd630
commit f285813ec1
1 changed files with 11 additions and 2 deletions

View File

@ -382,13 +382,22 @@ it. Hence, a fully platform-independant way to use alignment is not supported.
/**************************************************
* Macros regarding static code analysis
**************************************************/
#if defined(__clang__)
#ifdef __cplusplus
#if !defined(__has_cpp_attribute)
#define __has_cpp_attribute(x) 0
#endif
#if defined(__clang__) && __has_cpp_attribute(clang::fallthrough)
#define FDK_FALLTHROUGH [[clang::fallthrough]]
#elif defined(__GNUC__) && (__GNUC__ >= 7)
#endif
#endif
#ifndef FDK_FALLTHROUGH
#if defined(__GNUC__) && (__GNUC__ >= 7)
#define FDK_FALLTHROUGH __attribute__((fallthrough))
#else
#define FDK_FALLTHROUGH
#endif
#endif
#ifdef _MSC_VER
/*