使用SDL2.0时,如果SDL无法创建窗口或渲染器,是否合理停止程序而不使用SDL_Quit()?
例如,我可以写(在SDL初始化之后,窗口和渲染器创建):
if (!renderer)
{
fprintf("Error while creating the renderer: %s\n", SDL_GetError());
return -1;
}
SDL_DestroyWindow(window);
IMG_Quit();
SDL_Quit();
return 0;
或者我应该写:
if (!renderer)
{
fprintf("Error while creating the renderer: %s\n", SDL_GetError());
SDL_DestroyWindow(window);
SDL_Quit();
return -1;
}
SDL_DestroyWindow(window);
IMG_Quit();
SDL_Quit();
return 0;
我认为第二种选择更好,但我不确定即使在没有创建渲染器的情况下关闭SDL和销毁窗口也是非常有用。
答案 0 :(得分:6)
来自the SDL Wiki:
您应该在所有退出条件下调用它。
因此,假设您之前调用了SDL_Init
,这是使用任何其他SDL函数所必需的,无论如何都应该调用SDL_Quit
。
另外,从同一页面:
即使初始化错误,也可以安全地调用此函数。
这意味着您甚至不必担心调用它是错误的。
为方便起见,您可以将SDL_Quit
与atexit
一起使用,但这更属于品味。