Circumvent failure of SDL_Init() when not using SDL_main() as an entry point.
Defined in SDL_main.h
void SDL_SetMainReady(void);
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 2.0.0.