SDL窗口不会弹出

时间:2018-11-02 17:53:51

标签: c++ window sdl

我的窗口不会弹出。

控制台出现,并且没有打开窗口,只是说“应用程序已结束”

这是我的代码:

#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);

}

1 个答案:

答案 0 :(得分:1)

idx是您的错误。返回之后,由于order.get(idx)结束,程序结束。返回之后,main中的任何行均不会执行。在调用SDL_CreateWindow之前,您当然不想结束。

Can a function continue after a return statement?

将代码更改为

return 0;

main()中返回0;可以从main中省略。

Can I omit return from main in C?

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

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

Are global variables bad?

#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++

https://wiki.libsdl.org/SDL_Init