diff --git a/include/SDL3/SDL_begin_code.h b/include/SDL3/SDL_begin_code.h index 1df322967..95084b1c9 100644 --- a/include/SDL3/SDL_begin_code.h +++ b/include/SDL3/SDL_begin_code.h @@ -262,10 +262,31 @@ */ #define SDL_RESTRICT __restrict__ +/** + * Check if the compiler supports a given builtin functionality. + * + * This allows preprocessor checks for things that otherwise might fail + * to compile. + * + * Supported by virtually all clang versions and more-recent GCCs. Use this + * instead of checking the clang version if possible. + * + * On compilers without has_builtin support, this is defined to 0 (always false). + * + * \since This macro is available since SDL 3.1.3. + */ +#define SDL_HAS_BUILTIN(x) __has_builtin(x) + /* end of wiki documentation section. */ #endif - +#ifndef SDL_HAS_BUILTIN +#ifdef __has_builtin +#define SDL_HAS_BUILTIN(x) __has_builtin(x) +#else +#define SDL_HAS_BUILTIN(x) 0 +#endif +#endif #ifndef SDL_DEPRECATED # if defined(__GNUC__) && (__GNUC__ >= 4) /* technically, this arrived in gcc 3.1, but oh well. */ diff --git a/include/SDL3/SDL_stdinc.h b/include/SDL3/SDL_stdinc.h index d9ef590c5..c7d0b85d9 100644 --- a/include/SDL3/SDL_stdinc.h +++ b/include/SDL3/SDL_stdinc.h @@ -147,17 +147,6 @@ void *alloca(size_t); typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1] #endif -/** - * Check if the compiler supports a given builtin. - * Supported by virtually all clang versions and recent gcc. Use this - * instead of checking the clang version if possible. - */ -#ifdef __has_builtin -#define SDL_HAS_BUILTIN(x) __has_builtin(x) -#else -#define SDL_HAS_BUILTIN(x) 0 -#endif - /** * The number of elements in a static array. *