SDL 窗口不会弹出
SDL Window won't pop up
我的窗口不会弹出。
控制台出现,并没有打开窗口,只是说"应用程序结束">
这是我的代码:
#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;
是您的错误。返回后,程序结束,因为main()
结束。返回后不会执行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++
中返回0;可以从主体中省略。
我可以省略C中main的return吗?
此外,我希望这段代码会在许多编译器上发出警告(关于无法访问的代码(。如果它没有发出警告,您可能需要提高编译器的警告级别。如果它确实发出了警告,你需要更加注意这些警告。。
您可能还想删除全局变量,而将变量设置为main的局部变量。全局变量通常被认为是一种糟糕的做法。
全局变量坏吗?
SDL_Init()
也可能失败。您可能需要检查其返回值,并在记录错误失败时退出。
if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
SDL_Log("Unable to initialize SDL: %s", SDL_GetError());
return 1;
}
https://wiki.libsdl.org/SDL_Init
相关文章:
- SDL 窗口不会弹出
- 在 OSX 上打开 SDL 窗口时不要打开终端窗口
- 我可以在 SDL 窗口外跟踪我的鼠标 pos 吗?
- SDL 窗口在打开后关闭
- SDL窗口的错误
- SDL 窗口在 Eclipse 中未出现
- 使用 OpenGL 窗口(如 GLFW)或周围的窗口(如 GTK 或 SDL)是否存在性能差异?
- 为什么 SDL 在最后一个窗口关闭时不发出SDL_QUIT
- SDL 窗口在移动时消失
- SDL:窗口冻结
- 通过引用/地址传递SDL窗口
- SDL 窗口弹出,但它是空白的,完全没有响应
- SDL调整窗口尺寸
- 设置窗口大小后,SDL不会渲染到整个窗口
- SDL视频显示窗口:如何连接窗口关闭事件回调
- 最小化后无法恢复 SDL 窗口
- SDL窗口根本不显示
- c++ SDL - 在窗口的特定区域内呈现
- 如何保持我在 Visual Studio SDL 中编写的图像窗口处于打开状态
- c++半透明窗口SDL