什么是SDKDDKVer.h?

时间:2012-05-10 17:38:18

标签: c++ windows visual-c++

使用MSVC创建的所有项目都有stdafx,这是预编译的头文件,我知道它们是什么,但是targetver.h呢?它包括SDKDDKVer.h,我找不到那个标题。

这是为了什么?

2 个答案:

答案 0 :(得分:10)

targetver.hSDKDDKVer.h用于根据您希望程序支持的操作系统,从Windows标头中控制代码中包含的函数,常量等。我相信targetver.h将默认设置为使用最新版本的Windows,除非在别处指定了定义。

SDKDDKVer.h是实际定义代表每个版本的Windows,IE等的#defines的头文件。

答案 1 :(得分:3)

SDKDDKVer.h的第193行(在SDK 8.1中)声明:

“如果尚未定义版本,则默认为最新版本

此评论专门指代_WIN32_WINNTNTDDI_VERSION宏。

所以..

  1. SDKDDKVer.h应用默认值,除非已定义宏
  2. 以下代码可用于显式定义宏
    • #define _WIN32_WINNT 0x0601
    • #define NTDDI_VERSION 0x06010000
  3. 有趣的是,SDKDDKVer.h头文件具有为所有SDK版本定义的“常量”值。例如:
    • #define _WIN32_WINNT_WINXP 0x0501
    • #define _WIN32_WINNT_WIN7 0x0601
    • #define _WIN32_WINNT_WIN8 0x0602
  4. 一种惯例是在名为_WIN32_WINNT的头文件中定义NTDDI_VERSIONTargetVer.h,您可以在预编译的标头StdAfx.h中引用该文件。
  5. ADDTIONAL READING