You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Windows API的GetVersionEx()为何出现不兼容指针类型警告?

解决GetVersionEx与OSVERSIONINFOEX搭配的指针类型不兼容警告

警告原因

GetVersionEx函数的参数要求是LPOSVERSIONINFO(即指向OSVERSIONINFO结构体的指针),而你传入的是OSVERSIONINFOEX*类型的指针。虽然OSVERSIONINFOEX是OSVERSIONINFO的扩展结构体,内存布局的开头部分完全一致,但C语言编译器会严格检查指针类型,因此抛出不兼容警告。

解决方案

直接对参数进行强制类型转换,将OSVERSIONINFOEX*转为LPOSVERSIONINFO即可,这是合法操作,因为两个结构体的初始字段完全匹配:

OSVERSIONINFOEX osInfo;
osInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
GetVersionEx((LPOSVERSIONINFO)&osInfo); // 强制类型转换消除警告
printf("%ld\n", osInfo.dwBuildNumber);

额外提示

从Windows 8.1开始,GetVersionEx已被微软标记为弃用函数,官方推荐使用VerifyVersionInfoW、GetFileVersionInfo或者通过查询系统文件版本等方式获取系统版本信息。如果是开发新应用,建议优先考虑这些替代方案。

内容的提问来源于stack exchange,提问作者loaded_dypper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 16:40:27