基本上,我正在用 SDL 编写程序。
这是代码的一部分:
// create game window
game.window = SDL_CreateWindow(
"Game",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
160,
144,
0
);
if (game.window == NULL)
{
fprintf(stderr, "Window error: %s\n", SDL_GetError());
return 1;
}
atexit(SDL_DestroyWindow());
atexit(SDL_Quit());
return 0;
}
我的问题如下。考虑到 C 的程序性质,如果(game.window == NULL)
是这种情况并return 1
执行,会发生什么。程序是否在return 1
不调用atexit()
该语句之后的函数的情况下终止if
?
尽管在 -语句之后有函数,程序是否仍然调用SDL_DestroyWindow()
and SDL_Quit()
,这两个函数都在函数中?atexit()
atexit()
return 1
if (game.window == NULL)
据我了解,C从上到下执行代码,那么atexit()
如果return 1
之前发生过,它怎么知道最后调用函数呢?