c - 程序启动时出现 SDL_CeateWindow 错误

标签 c sdl assert

下面的代码初始化一个 SDL 窗口。由于错误,我找不到 SDL_CreateWindow() 返回 NULL

int xwin_init(int w, int h)
{
    int r;
    r = SDL_Init(SDL_INIT_VIDEO);
    assert(win == NULL);
    win = SDL_CreateWindow("PRG Semester Project",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED, w, h,SDL_WINDOW_SHOWN);
    SDL_SetWindowTitle(win, "PRG SEM");
    SDL_Surface *surface = SDL_CreateRGBSurfaceFrom(icon_32x32_bits,32, 32, 24, 32*3, 0xff, 0xff00,0xff0000, 0x0000);
    SDL_SetWindowIcon(win, surface);
    SDL_FreeSurface(surface);
    return r;
}

错误消息如下所示:

prgsem: xwin_sdl.c:58: xwin_init: Assertion win != NULL' failed`

最佳答案

虽然我无法告诉您问题是什么,但至少值得在初始化视频和创建窗口后检查错误。您可以使用SDL_GetError去做这个。通过此函数可以访问有关通过 SDL 库报告的错误的消息,并且您可以根据其他 SDL 函数(例如示例中的 SDL_Init)的返回代码来判断何时调用它。

关于c - 程序启动时出现 SDL_CeateWindow 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56177681/

相关文章:

c++ - 在 openGL 中正确混合的问题

java - 在 try/catch 中断言 True

java - 如何对自定义断言进行单元测试?

c++ - 在 C/C++ 中释放/删除 union malloc/new Array

c - 依靠 strtok_r 的内部指针安全吗?

c - 决定音乐文件大小

java - 异常与断言

C sscanf 和字符串格式

c - 变量在第一次调用后发生变化 - C 中的未定义行为?

sdl - 在支持的平台之间交叉编译SDL 2.0应用程序