首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么SDL_GetWindowWMInfo()需要SDL版本?

为什么SDL_GetWindowWMInfo()需要SDL版本?
EN

Stack Overflow用户
提问于 2016-09-04 13:05:49
回答 1查看 585关注 0票数 2

根据documentation

代码语言:javascript
复制
SDL_bool SDL_GetWindowWMInfo(SDL_Window*    window,
                             SDL_SysWMinfo* info)

SDL_SysWMinfo* infoSDL_Version version成员必须在编译时由SDL_VERSION宏定义,然后才能传递。

为什么SDL_GetWindowWMInfo需要编译调用代码时使用的SDL版本?如果SDL_GetWindowWMInfo不检查SDL版本,会发生什么情况?

EN

回答 1

Stack Overflow用户

发布于 2016-09-17 11:18:21

就像凯尔塔说的那样。这是来自SDL_windowswindow.c的:

代码语言:javascript
复制
SDL_bool
WIN_GetWindowWMInfo(_THIS, SDL_Window * window, SDL_SysWMinfo * info)
{
    const SDL_WindowData *data = (const SDL_WindowData *) window->driverdata;
    if (info->version.major <= SDL_MAJOR_VERSION) {
        info->subsystem = SDL_SYSWM_WINDOWS;
        info->info.win.window = data->hwnd;
        info->info.win.hdc = data->hdc;
        return SDL_TRUE;
    } else {
        SDL_SetError("Application not compiled with SDL %d.%d\n",
                     SDL_MAJOR_VERSION, SDL_MINOR_VERSION);
        return SDL_FALSE;
    }
}

此函数填充用户提供的结构。危险在于,当SDL中的平台支持发生变化时(与在新版本号中更明显的实际特性/API变化相反),这种结构很容易发生变化。

如果结构定义在不同SDL版本之间发生了更改(例如,您使用的是更新的标头,但使用的是旧的dll),则此要求允许SDL在践踏程序内存之前检测到问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39313710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档