22

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

这个是来做什么的 ?

4

2 回答 2

12

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

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

于 2012-05-10T18:30:28.620 回答
3

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. 一种约定是在名为 的头文件中定义_WIN32_WINNT和,您将在预编译的头文件中引用它。NTDDI_VERSIONTargetVer.hStdAfx.h

附加阅读

于 2016-09-21T14:58:26.593 回答