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

在main.cpp定义_WIN32_WINDOWS后仍收编译警告,求解决方案

解决Windows版本宏定义的编译警告问题

问题原因

你的代码存在两个关键问题:

  1. 宏定义顺序错误:应该先定义版本宏,再包含<SDKDDKVer.h>——该头文件会读取你定义的版本宏来配置Windows SDK版本,反过来写会导致头文件无法识别你后续定义的宏。
  2. 版本宏使用不当:_WIN32_WINDOWS是针对Windows桌面系统的旧宏,现在更推荐直接定义_WIN32_WINNT来指定目标Windows版本,且你的写法把_WIN32_WINNT_WIN10赋值给_WIN32_WINDOWS,逻辑上不符合编译器的预期。

修正后的代码

将代码调整为以下形式,确保宏定义在头文件包含之前:

#ifdef _WIN64
#define _WIN32_WINNT _WIN32_WINNT_WIN10  // 直接定义目标Windows 10的版本宏
#include <SDKDDKVer.h>
#elif _WIN32
#error "Build only supports x86-64 and does not support x86"
#endif // _WIN64

额外验证方案

如果调整后仍有警告,建议直接在项目的预处理器定义中添加版本宏:

  • 对于Visual Studio:右键项目→属性→C/C++→预处理器→预处理器定义,添加_WIN32_WINNT=0x0A00(0x0A00就是Windows 10的版本值,和_WIN32_WINNT_WIN10等价)
  • 对于命令行编译:添加编译参数-D_WIN32_WINNT=0x0A00

这样能确保所有源文件都统一使用指定的Windows版本目标,避免单个文件定义顺序导致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:55:24