即使在初始化失败后,我还应该使用SDL_Quit()吗?

The*_*rZZ 3 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;
Run Code Online (Sandbox Code Playgroud)

或者我应该写:

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;
Run Code Online (Sandbox Code Playgroud)

我认为第二种选择更好,但我不确定即使没有创建渲染器,关闭SDL并销毁窗口确实很有用.

Nel*_*eal 6

来自SDL Wiki:

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

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

另外,从同一页面:

即使在初始化错误的情况下,也可以安全地调用此函数.

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

为方便起见,你可以使用SDL_Quitatexit,但更多的是品味问题.