我在代码中使用了 RegisterDeviceNotification
API。如果我不使用 #define WINVER 0x501
,它就不起作用(出现链接器错误)。
1) 当我查看窗口 Winuser.h
时,RegisterDeviceNotificationA
定义在 #if(WINVER >= 0x0500)
下。这是什么原因?
2) 为了使 RegisterDeviceNotificationA
正常工作,我在自己的 .h 文件中声明了所有声明,但没有 #if(WINVER >= 0x0500)
。这是正确的方法吗?
3) 我的另一个问题是在没有 winver 的情况下声明 RegisterDeviceNotificationA
有什么问题吗? Winver有什么用?请详细解释一下。
最佳答案
WINVER
等定义的主要目的是用最新的编译器编译旧代码。
如果您正在编写新代码,则需要在您的 cpp 文件或项目文件中定义此变量以及可能的其他几个变量。该值是您要定位的 Windows 版本。 Microsoft 就是这样设计的。
将系统定义复制到您的代码中是极坏的做法。
关于c - 什么是 WINVER 0x501?没有它的 RegisterDeviceNotification 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11519926/