如何摆脱_WIN32_WINNT未定义的警告?

Use*_*637 16 c++ visual-c++

_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)
Run Code Online (Sandbox Code Playgroud)

在编译期间,此错误不断弹出.它似乎不会影响编译,但我应该如何摆脱它?我无视任何冒险的事吗?

use*_*353 19

将其设置为您希望程序运行的最旧的Windows操作系统.可能的值在此MSDN文章" 使用Windows标头"中给出.

您可以使用#define每个源文件中的语句或通过指定/DVisual C++支持的编译器选项来定义这些符号.

例如,要WINVER在源文件中设置,请使用以下语句:

 #define WINVER 0x0502    // Windows Server 2003 with SP1, Windows XP with SP2
Run Code Online (Sandbox Code Playgroud)

_WIN32_WINNT在源文件中设置,请使用以下语句:

#define _WIN32_WINNT 0x0502    // Windows Server 2003 with SP1, Windows XP with SP2
Run Code Online (Sandbox Code Playgroud)

_WIN32_WINNT使用/D编译器选项进行设置,请使用以下命令:

cl -c /D_WIN32_WINNT=0x0502 source.cpp
Run Code Online (Sandbox Code Playgroud)


Rom*_* R. 16

它是通过WinSDKVer.h为您定义的.因此,只需在源代码的顶部明确定义它(例如在stdafx.h的开头),你就会摆脱警告.

将它定义为相同的值(与_WIN32_WINNT_MAXVERWinSDKVer.h 相比)极不可能破坏任何东西.

例如,适用于Windows 7和.NET Framework 3.5 Service Pack 1的Windows®软件开发工具包(SDK)的WinSDKVer.h包含:

// This list contains the highest version constants supported by content 
// in the Windows SDK.

// [...]
#define _WIN32_WINNT_MAXVER     0x0601
Run Code Online (Sandbox Code Playgroud)

  • 我建议几乎在开始时将它添加到StdAfx.h中.以下是每个操作系统的值列表.http://msdn.microsoft.com/en-us/library/aa383745%28VS.85%29.aspx (2认同)

Iva*_*van 6

在VS2019中解决

解决此问题的方法以及可能使用的值的链接可以在我用来解决问题的 user93353 的超级答案中找到。

/sf/answers/901008321/

但是,在阅读解决方案后,我在 IDE(Visual Studio 2019)中设置了编译器选项。

对于任何想要快速设置它并想要知道位置的人(因为这些事情随着 IDE 版本的不同而变化,或者也许有人更熟悉另一个 IDE),这里就是它的位置。

在此输入图像描述

配置属性
C/C++
预处理器
预处理器定义
_WIN32_WINNT=0x0502