Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ sdkdver.h的作用是什么?_C++_Windows_Visual C++ - Fatal编程技术网

C++ 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

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


这是干什么用的?

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
    中定义它们。极好的、可用的答案!遗憾的是,这些常量在包含
    之前不可用。