2012-10-13 75 views

回答

12

它是通過WinSDKVer.h爲您定義的。因此,只需在源代碼的頂部明確定義它(例如在stdafx.h的開頭),就可以擺脫警告。

將它定義爲相同的值(與來自WinSDKVer.h的_WIN32_WINNT_MAXVER相比)是非常不可能破壞任何東西的。

例如,視窗軟件開發工具包WinSDKVer.h(SDK),爲Windows 7和.NET Framework 3.5 Service Pack 1中包含:

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

// [...] 
#define _WIN32_WINNT_MAXVER  0x0601 
+1

我建議幾乎在開始時將它添加到StdAfx.h。這是每個操作系統的值列表。 http://msdn.microsoft.com/en-us/library/aa383745%28VS.85%29.aspx –

14

它設置爲最古老的Windows操作系統,您希望您的程序運行。 可能的值在本MSDN文章Using the Windows Headers中給出。

您可以通過在每個 源文件#define聲明,或通過指定 的Visual C++支持/D編譯器選項定義這些符號。

例如,設置WINVER在源文件中,使用 下面的語句:

#define WINVER 0x0502 // Windows Server 2003 with SP1, Windows XP with SP2 

要設置_WIN32_WINNT在源文件中,使用下面的語句:

#define _WIN32_WINNT 0x0502 // Windows Server 2003 with SP1, Windows XP with SP2 

設置_WIN32_WINNT使用/D編譯器選項,請使用以下命令:

cl -c /D_WIN32_WINNT=0x0502 source.cpp 
1

注意:#define _WIN32_WINNT必須出現之前任何頭文件,包括「stdafx.h」。

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – Stonz2

+2

@ Stonz2我不知道... [A] OP抱怨他得到了「_WIN32_WINNT未定義」錯誤。 [B]我告訴他在哪裏定義_WIN32_WINNT來擺脫錯誤(看他在哪裏問「我應該如何擺脫它?」)。 [C]這種幫助不是嗎? – Pierre