C 和 SDL 退出函数

C and SDL quit from function

我使用 C 和 SDL 2.0,但我有一个问题,这个(当你点击 window 的 "x" 它退出时):

void function(SDL_Surface *screen) {
  SDL_Event event;
  bool quit=false;
    while (!quit) {
            SDL_WaitEvent(&event);

            switch (event.type) {
               case...

               case SDL_QUIT:    
                  quit = true;        
                  break;
            }
}

这是可行的,但不是很好。如果这是在这样的函数中,它只会退出到 main(),所以我需要再次单击 "x" 才能退出整个程序。 我该如何解决? (我每次都想退出整个程序,不管它是否在函数中)。

正如评论中已经提到的,您很可能有多个事件处理循环,这通常是不正确的设计。你的游戏总体布局应该是这样的:

int main(int argc, char* argv[]) {

    // do initialize stuff

    bool run = true;
    SDL_Event evt;

    // game loop
    while (run) {
        // process OS events
        while(SDL_PollEvent(&evt) != 0) {
            switch (evt.type) {
                case SDL_QUIT:    
                  run = false;        
                  break;
            }
        }

        update();
        render();
    }

    // clean up
    SDL_Quit();
    return 0;
}