我在代码中使用了RegisterDeviceNotification
API。如果我没有使用#define WINVER 0x501
,它就无法正常工作(获取链接器错误)。
1)当我查看窗口Winuser.h
时,RegisterDeviceNotificationA
定义了#if(WINVER >= 0x0500)
。这是什么原因?
2)为了使RegisterDeviceNotificationA
工作,我在没有#if(WINVER >= 0x0500)
的情况下在我自己的.h文件中声明了所有声明。这是对的吗?
3)我的另一个问题是在没有winver的情况下声明RegisterDeviceNotificationA
有什么问题吗? Winver有什么用?请详细解释我。
答案 0 :(得分:2)
像WINVER
这样的定义的主要目的是用最近的编译器编译旧代码。
如果您正在编写新代码,则需要在cpp文件或项目文件中定义此变量以及其他几个变量。该值是您要定位的Windows版本。这就是微软设计它的方式。
将系统定义复制到代码中是非常糟糕的做法。