Updated check for stdbool.h

If you're building in a C99 or newer environment, we'll automatically include stdbool.h.

If you're building in a C89 or C90 environment, we'll assume that stdbool.h isn't available and define bool as an unsigned char. If you have a working stdbool.h and want SDL to use it, you can either include stdbool.h before SDL headers, or define SDL_INCLUDE_STDBOOL_H in your project.

Closes https://github.com/libsdl-org/SDL/pull/10980
This commit is contained in:
Sam Lantinga 2024-09-28 14:39:14 -07:00
parent 7ca0e9ede1
commit 039148fb0e
4 changed files with 21 additions and 25 deletions

View File

@ -34,35 +34,28 @@
#include <SDL3/SDL_platform_defines.h>
/* Most everything except Visual Studio 2013 and earlier has stdbool.h now */
#if defined(_MSC_VER) && (_MSC_VER < 1910)
#define SDL_DEFINE_STDBOOL
#endif
/* gcc-2.95 had non-standard stdbool.h */
#if defined(__GNUC__) && (__GNUC__ < 3)
#define SDL_DEFINE_STDBOOL
#endif
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
#include <inttypes.h>
#endif
#include <stdarg.h>
#ifndef __cplusplus
#ifdef SDL_DEFINE_STDBOOL
#ifndef __bool_true_false_are_defined
#define __bool_true_false_are_defined 1
#define bool uint8_t
#define false 0
#define true 1
#endif
#else
#include <stdbool.h>
#endif
#endif
#include <stdint.h>
#include <string.h>
#include <wchar.h>
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
defined(SDL_INCLUDE_INTTYPES_H)
#include <inttypes.h>
#endif
#ifndef __cplusplus
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
defined(SDL_INCLUDE_STDBOOL_H)
#include <stdbool.h>
#elif !defined(__bool_true_false_are_defined) && !defined(bool)
#define bool unsigned char
#define false 0
#define true 1
#define __bool_true_false_are_defined 1
#endif
#endif /* !__cplusplus */
#ifndef SDL_DISABLE_ALLOCA
# ifndef alloca
# ifdef HAVE_ALLOCA_H

View File

@ -34,6 +34,8 @@
#ifndef SDL_test_crc32_h_
#define SDL_test_crc32_h_
#include <SDL3/SDL_stdinc.h>
#include <SDL3/SDL_begin_code.h>
/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus

View File

@ -30,6 +30,8 @@
#ifndef SDL_test_memory_h_
#define SDL_test_memory_h_
#include <SDL3/SDL_stdinc.h>
#include <SDL3/SDL_begin_code.h>
/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus

View File

@ -25,7 +25,6 @@
#include "../SDL_sysjoystick.h"
#include "../usb_ids.h"
#include <stdbool.h>
#define COBJMACROS
#include <gameinput.h>