SDL_enabled_assert - The macro used when an assertion is enabled.
Contents
Availability
This macro is available since SDL 3.2.0.
Simple Directmedia Layer SDL 3.2.20 SDL_enabled_assert(3)
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.
Name
SDL_enabled_assert - The macro used when an assertion is enabled.
Synopsis
#include<SDL3/SDL_assert.h>#defineSDL_enabled_assert(condition)\do{\while(!(condition)){\staticstructSDL_AssertDatasdl_assert_data={false,0,#condition,NULL,0,NULL,NULL};\constSDL_AssertStatesdl_assert_state=SDL_ReportAssertion(&sdl_assert_data,SDL_FUNCTION,SDL_FILE,SDL_LINE);\if(sdl_assert_state==SDL_ASSERTION_RETRY){\continue;/*goagain.*/\}elseif(sdl_assert_state==SDL_ASSERTION_BREAK){\SDL_AssertBreakpoint();\}\break;/*notretrying.*/\}\}while(SDL_NULL_WHILE_LOOP_CONDITION)