C++ SDL2窗口没有';你不能马上关门吗?

C++ SDL2窗口没有';你不能马上关门吗?,c++,window,sdl,sdl-2,C++,Window,Sdl,Sdl 2,更具体地说,事实是循环在“true”时循环。但我不知道什么是真的,也不知道它是如何循环的。有人能解释一下它是怎么工作的吗? 如果有人能基本上一步一步地解释这里的一切,我将不胜感激。(例如,“SDLL窗口”是什么,SDLL事件是什么)< < /P> < P>除非我读错了这个问题,这似乎是一个非常普遍的C++语言问题,与SDL问题混合在一起。我只需注意一下,SDL需要足够的C++知识,如果你不自信,你很快就会遇到更多的障碍。 无论如何,C++中的一个表达式({…})循环将继续循环,括号中的“表达式”

更具体地说,事实是循环在“true”时循环。但我不知道什么是真的,也不知道它是如何循环的。有人能解释一下它是怎么工作的吗?
如果有人能基本上一步一步地解释这里的一切,我将不胜感激。(例如,“SDLL窗口”是什么,SDLL事件是什么)< < /P> < P>除非我读错了这个问题,这似乎是一个非常普遍的C++语言问题,与SDL问题混合在一起。我只需注意一下,SDL需要足够的C++知识,如果你不自信,你很快就会遇到更多的障碍。

无论如何,C++中的一个表达式({…})循环将继续循环,括号中的“表达式”则计算为true。如果您希望永远循环,您可以通过编写以下命令强制表达式为true:while(true){…}。退出此循环的唯一方法是从循环内部调用“break”命令。一旦程序脱离循环,程序将到达主“返回0;”并安全退出

关于这一行:

    while (true)
    {
        if (SDL_PollEvent(&windowEvent))
        {
            if (SDL_QUIT == windowEvent.type)
            {
                break;
            }
        }
    }
每次运行这一行时,SDL都会检查是否有任何“事件”可供处理。事件是从SDL或您的操作系统发送到您的应用程序以使您的应用程序执行某些操作的“消息”。在代码中,您正在检查窗口事件的“IE轮询”。需要明确的是,当用户(您)单击windows关闭按钮、最小化、最大化、调整窗口大小等时,这些事件将发送到您的应用程序。当收到其中一条消息时,此行将返回true。你的工作是弄清楚这件事是什么以及你想用它做什么

这些线路:

if (SDL_PollEvent(&windowEvent))
将检查接收到的事件类型。如果事件类型为SDL_QUIT(即用户按下窗口上的关闭按钮),则将执行“中断”命令。如前所述,如果调用中断,它将退出循环,应用程序将关闭


总之,您的代码将进入一个无限for循环,因为它的表达式总是计算为true(true==true)。在循环中,我们检查是否有新事件。如果我们真的得到了一个事件,弄清楚它是什么。如果是SDL_退出,则从循环中中断。如果我们*没有“获取事件,那么只需重新循环并再次检查事件。

而(true)
表示“无限循环”。或者直到触发
中断
。“我不知道什么是真的。”“这是一个布尔值。例如,
1<2
true
。或者
42==42
。非常感谢!我终于明白了为什么它允许窗口保持打开,为什么“while(true)”是有用的谢谢!如果有助于回答您的问题,请接受回答
if (SDL_PollEvent(&windowEvent))
if (SDL_QUIT == windowEvent.type)
{
    break;
}