table of contents
other versions
- testing 3.2.10+ds-1
- unstable 3.2.10+ds-1
- experimental 3.2.16+ds-1
SDL_enabled_assert(3) | SDL3 FUNCTIONS | SDL_enabled_assert(3) |
NAME¶
SDL_enabled_assert - The macro used when an assertion is enabled.
SYNOPSIS¶
#include <SDL3/SDL_assert.h>
#define SDL_enabled_assert(condition) \ do { \ while ( !(condition) ) { \ static struct SDL_AssertData sdl_assert_data = { 0, 0, #condition, 0, 0, 0, 0 }; \ const SDL_AssertState sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \ if (sdl_assert_state == SDL_ASSERTION_RETRY) { \ continue; /* go again. */ \ } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \ SDL_AssertBreakpoint(); \ } \ break; /* not retrying. */ \ } \ } while (SDL_NULL_WHILE_LOOP_CONDITION)
DESCRIPTION¶
This isn't for direct use by apps, but this is the code that is inserted when an SDL_assert is enabled.
The do {} while(0) avoids dangling else problems:
-
if (x) SDL_assert(y); else blah();
... without the do/while, the "else" could attach to this macro's "if". We try to handle just the minimum we need here in a macro...the loop, the static vars, and break points. The heavy lifting is handled in SDL_ReportAssertion().
MACRO PARAMETERS¶
- condition
- the condition to assert.
AVAILABILITY¶
This macro is available since SDL 3.2.0.
SDL 3.2.16 | Simple Directmedia Layer |