include: Move SDL_HAS_BUILTIN to SDL_begin_code.h, document it.

This macro fits better here, since most of the other macros in this file are
for testing similar compiler/target features, etc.
This commit is contained in:
Ryan C. Gordon 2024-12-19 19:11:47 -05:00
parent e46d8756e5
commit ff366fba87
No known key found for this signature in database
GPG key ID: FA148B892AB48044
2 changed files with 22 additions and 12 deletions

View file

@ -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. */

View file

@ -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.
*