Circumvent failure of SDL_Init() when not using SDL_main() as an entry point.
Defined in <SDL3/SDL_main.h>
This function is defined in SDL_main.h, along with the preprocessor rule to redefine main() as SDL_main(). Thus to ensure that your main() function will not be changed it is necessary to define SDL_MAIN_HANDLED before including SDL.h.
This function is available since SDL 3.0.0.
#define SDL_MAIN_HANDLED
#include <SDL3/SDL.h>
#include <SDL3/SDL_main.h>
int main(int argc, char *argv[])
{
SDL_SetMainReady();
SDL_Init(SDL_INIT_VIDEO);
/* ... */
SDL_Quit();
return 0;
}