我是否应该在初始化失败后使用SDL_Quit()?

时间:2016-08-16 23:59:34

标签: c sdl-2

使用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和销毁窗口也是非常有用。

1 个答案:

答案 0 :(得分:6)

来自the SDL Wiki

  

您应该在所有退出条件下调用它。

因此,假设您之前调用了SDL_Init,这是使用任何其他SDL函数所必需的,无论如何都应该调用SDL_Quit

另外,从同一页面:

  

即使初始化错误,也可以安全地调用此函数。

这意味着您甚至不必担心调用它是错误的。

为方便起见,您可以将SDL_Quitatexit一起使用,但这更属于品味。