什么是SDKDDKVer.h?

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

这个是来做什么的 ?

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

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

SDKDDKVer.h (在SDK 8.1中)的193行指出:

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

此注释特别指的是_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. 一个约定是在名为TargetVer.h的头文件中定义_WIN32_WINNTNTDDI_VERSION ,在预编译的头文件StdAfx.h TargetVer.h它。

附加阅读

  • 修改WINVER和_WIN32_WINNT
  • 使用Windows头
  • 目标平台版本对于VS C ++项目意味着什么?