C++ sdkdver.h的作用是什么?
所有用MSVC创建的项目都有stdafx,它是预编译的头文件,我知道它们是什么,但是targetver.h呢?它包括sdkdver.h,我找不到那个标题是关于什么的C++ sdkdver.h的作用是什么?,c++,windows,visual-c++,C++,Windows,Visual C++,所有用MSVC创建的项目都有stdafx,它是预编译的头文件,我知道它们是什么,但是targetver.h呢?它包括sdkdver.h,我找不到那个标题是关于什么的 这是干什么用的?targetver.h和SDKDDKVer.h用于根据您希望程序支持的操作系统,控制从Windows标题中包含在代码中的函数、常量等。我相信targetver.hset默认使用最新版本的Windows,除非在别处指定了定义 SDKDDKVer.h是头文件,它实际定义了表示每个版本的Windows、IE等的\defin
这是干什么用的?
targetver.h
和SDKDDKVer.h
用于根据您希望程序支持的操作系统,控制从Windows标题中包含在代码中的函数、常量等。我相信targetver.h
set默认使用最新版本的Windows,除非在别处指定了定义
SDKDDKVer.h
是头文件,它实际定义了表示每个版本的Windows、IE等的\defines
。SDKDDKVer.h
的第193行(在SDK 8.1中)说明:
如果尚未定义版本,则默认为最新版本
此注释特别指的是\u WIN32\u WINNT
和NTDDI\u版本
宏
所以
SDKDDKVer.h
应用默认值,除非已定义宏#定义_WIN32_WINNT 0x0601
#定义NTDDI_版本0x06010000
SDKDDKVer.h
头文件为所有SDK版本定义了“常量”值。例如:
\define\u WIN32\u WINNT\u WINXP 0x0501
\define\u WIN32\u WINNT\u WIN7 0x0601
\define\u WIN32\u WINNT\u WIN8 0x0602
TargetVer.h
的头文件中定义\u WINNT
和NTDDI\u VERSION
,您将在预编译的头文件StdAfx.h
中引用该头文件\u WIN32\u WINNT
和WINVER
。它做其他事情,但这是它最重要的任务。targetver.h
文件是在创建项目时自动生成的,只包含两行:#pragma once
和#include
,因此基本上它不做包含SDKDDKVer.h本身不做的事情。@d7samurai好吧,默认情况下它什么都不做,但是您可以在targetver.h
中指定目标版本,并且应该在调用SDKDDKVer.h
之前指定目标版本。它只是一个允许您执行此操作的文件。当您使用Visual Studio向导创建Windows桌面应用程序时,生成的.rc
资源文件可能包括以下内容:\ifndef APSTUDIO\u INVOKED#include“targetver.h”#endif
在此类应用程序中,最好维护一个targetver.h
文件来定义\u WIN32\u WINNT
和WINVER
,而不是在stdafx.h
中定义它们。极好的、可用的答案!遗憾的是,这些常量在包含
之前不可用。