Use stdbool for SDL_bool

This helps the compiler warn people when they're doing something like "if (SDL_Init(0) < 0)"
This commit is contained in:
Sam Lantinga 2024-08-26 16:49:57 -07:00
parent 9ff3446f03
commit f08ac438ed
4 changed files with 10 additions and 14 deletions

View File

@ -2,7 +2,7 @@
import SDL3 import SDL3
guard SDL_Init(SDL_INIT_VIDEO) != 0 else { guard SDL_Init(SDL_INIT_VIDEO) else {
fatalError("SDL_Init error: \(String(cString: SDL_GetError()))") fatalError("SDL_Init error: \(String(cString: SDL_GetError()))")
} }

View File

@ -1696,6 +1696,8 @@ This header has been removed and a simplified version of this API has been added
The standard C headers like stdio.h and stdlib.h are no longer included, you should include them directly in your project if you use non-SDL C runtime functions. The standard C headers like stdio.h and stdlib.h are no longer included, you should include them directly in your project if you use non-SDL C runtime functions.
M_PI is no longer defined in SDL_stdinc.h, you can use the new symbols SDL_PI_D (double) and SDL_PI_F (float) instead. M_PI is no longer defined in SDL_stdinc.h, you can use the new symbols SDL_PI_D (double) and SDL_PI_F (float) instead.
SDL_bool is now defined as bool, and is 1 byte instead of the size of an int.
SDL3 attempts to apply consistency to case-insensitive string functions. In SDL2, things like SDL_strcasecmp() would usually only work on English letters, and depending on the user's locale, possibly not even those. In SDL3, consistency is applied: SDL3 attempts to apply consistency to case-insensitive string functions. In SDL2, things like SDL_strcasecmp() would usually only work on English letters, and depending on the user's locale, possibly not even those. In SDL3, consistency is applied:
- Many things that don't care about case-insensitivity, like SDL_strcmp(), continue to work with any null-terminated string of bytes, even if it happens to be malformed UTF-8. - Many things that don't care about case-insensitivity, like SDL_strcmp(), continue to work with any null-terminated string of bytes, even if it happens to be malformed UTF-8.

View File

@ -36,6 +36,9 @@
#include <inttypes.h> #include <inttypes.h>
#endif #endif
#include <stdarg.h> #include <stdarg.h>
#ifndef __cplusplus
#include <stdbool.h>
#endif
#include <stdint.h> #include <stdint.h>
#include <string.h> #include <string.h>
#include <wchar.h> #include <wchar.h>
@ -191,7 +194,7 @@ void *alloca(size_t);
* *
* \sa SDL_bool * \sa SDL_bool
*/ */
#define SDL_FALSE 0 #define SDL_FALSE false
/** /**
* A boolean true. * A boolean true.
@ -200,7 +203,7 @@ void *alloca(size_t);
* *
* \sa SDL_bool * \sa SDL_bool
*/ */
#define SDL_TRUE 1 #define SDL_TRUE true
/** /**
* A boolean type: true or false. * A boolean type: true or false.
@ -210,7 +213,7 @@ void *alloca(size_t);
* \sa SDL_TRUE * \sa SDL_TRUE
* \sa SDL_FALSE * \sa SDL_FALSE
*/ */
typedef int SDL_bool; typedef bool SDL_bool;
/** /**
* A signed 8-bit integer type. * A signed 8-bit integer type.
@ -482,6 +485,7 @@ typedef Sint64 SDL_Time;
/** \cond */ /** \cond */
#ifndef DOXYGEN_SHOULD_IGNORE_THIS #ifndef DOXYGEN_SHOULD_IGNORE_THIS
SDL_COMPILE_TIME_ASSERT(bool, sizeof(SDL_bool) == 1);
SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1); SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1);
SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1); SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1);
SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2); SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2);

View File

@ -121,16 +121,6 @@
#include <float.h> #include <float.h>
#endif #endif
#ifndef __cplusplus
#ifdef HAVE_STDBOOL_H
#include <stdbool.h>
#else
typedef int bool;
#define true 1
#define false 0
#endif
#endif // !__cplusplus
// If you run into a warning that O_CLOEXEC is redefined, update the SDL configuration header for your platform to add HAVE_O_CLOEXEC // If you run into a warning that O_CLOEXEC is redefined, update the SDL configuration header for your platform to add HAVE_O_CLOEXEC
#ifndef HAVE_O_CLOEXEC #ifndef HAVE_O_CLOEXEC
#define O_CLOEXEC 0 #define O_CLOEXEC 0