什么是_WIN32_WINNT?它是如何工作的

What is _WIN32_WINNT and how does it work?

本文关键字:工作 何工作 WIN32 WINNT 什么      更新时间:2023-10-16

编辑2:好的,所以我改为Orwell DevC++,它包含"winnt.h",它包含#define KEY_WOW64_64KEY 0x0100,但它仍然不起作用(参见第1版:(

编辑1:我查看了CodeBlock和DevC++附带的"winnt.h",DevC++缺少以下行:

#if (_WIN32_WINNT >= 0x0502)
#define KEY_WOW64_64KEY 0x0100
#define KEY_WOW64_32KEY 0x0200
#endif

把上面的代码放在DevC++的wint.h中是行不通的。


原始帖子:我有一个32位的应用程序(在DevC++和Windows 7 64位中开发(,它读取64位应用程序的注册表作为其任务之一,所以我试图在RegOpenKeyEx中使用"KEY_WOW64_64KEY"标志,并发现很少有关于如何将其与_WIN32_WINNT:thisthis一起使用的帖子

当我在CodeBlock项目(一个测试项目(中使用它时,它的工作原理很有魅力,但同一个代码不适用于DevC++,我现在无法将它移植到代码块,因为代码块会带来其他问题。

我如何使它与DevC++一起工作?

感谢

它定义了要使用的windows头文件的版本。它必须在#include <Windows.h>之前声明。

如果你要修改它,你可能还应该设置其他一些类似的变量:

MSDN使用Windows标头

  1. _WIN32_WINNT是一个预处理器令牌,在使用_WIN32_WINNT的任何地方都会被(0x0601)取代。预处理器只是扫描整个文件,并在找到_WIN32_WINNT的地方用(0x0601)替换它

可能存在ifdef预处理器保护,可以启用/禁用预处理器常量。类似:

#ifdef _WIN32_WINNT
#define KEY32 32
#endif

在那里,KEY32将仅被定义如果_WIN32_WINNT被定义。

  1. 它已经可以与DevC++一起使用了