SDL Window 不会弹出

SDL Window won't pop up

我的window不会弹出。

控制台出现,没有打开window只是说"Application ended"

这是我的代码:

#include <iostream>
#include <SDL2/SDL.h>
#include <SDL2/SDL_ttf.h>
#include <SDL2/SDL_mixer.h>
#include <SDL2/SDL_image.h>
#include <windows.h>

using namespace std;

SDL_Window * okno;
SDL_Surface * ekran;
SDL_Event zdarzenie;

int frame = 0;

int main(int argc, char*args[])
{
    SDL_Init(SDL_INIT_EVERYTHING);
    return 0;

    okno = SDL_CreateWindow("SDL_TEST", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, NULL);

    ekran = SDL_GetWindowSurface(okno);

}

return 0; 是你的错误。在 return 之后程序结束,因为 main() 结束。在 return 之后没有执行 main 中的任何行。你当然不想在调用 SDL_CreateWindow.

之前结束

将代码更改为

#include <iostream>
#include <SDL2/SDL.h>
#include <SDL2/SDL_ttf.h>
#include <SDL2/SDL_mixer.h>
#include <SDL2/SDL_image.h>
#include <windows.h>

using namespace std;

SDL_Window * okno;
SDL_Surface * ekran;
SDL_Event zdarzenie;

int frame = 0;

int main(int argc, char*args[])
{
    SDL_Init(SDL_INIT_EVERYTHING);

    okno = SDL_CreateWindow("SDL_TEST", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, NULL);

    ekran = SDL_GetWindowSurface(okno);

}

c++return0;可以从 main.

中省略

Can I omit return from main in C?

我还希望此代码在许多编译器上发出警告(关于无法访问的代码)。如果它没有发出警告,您可能需要调高编译器的警告级别。如果它确实警告你需要更加注意警告..

您可能还想删除全局变量,而是将变量设为 main 的局部变量。全局变量通常被认为是一种不好的做法。

Are global variables bad?

SDL_Init() 可能会失败。您可能需要检查其 return 值并在记录错误失败时退出。

if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
    SDL_Log("Unable to initialize SDL: %s", SDL_GetError());
    return 1;
}

https://wiki.libsdl.org/SDL_Init