2

我正在从事从 VC++6 到 VC++9 的迁移项目。我在 VC++9 项目中使用自定义枚举会导致编译错误,因为它与 mfc 基类 winuser.h 重复。

示例代码:-

enum CHKTYPE{ INPUT, READER, BOTH_IR };    

错误:-

error C2365: 'INPUT' : redefinition; previous definition was 'typedef'.
c:\program files\microsoft sdks\windows\v6.0a\include\winuser.h(5292) : see declaration of 'INPUT'    

这不是 VC++6 的问题。

4

1 回答 1

1

您曾经使用非常旧版本的 Windows SDK 编译您的代码。VC6 甚至比添加了 SendInput() API 函数的操作系统 Windows XP 还要老。

你可以解决你的问题

 #define _WIN32_WINNT 0x400   // Targeting Windows 2000
 #include <windows.h>

但是你不能使用在 Windows 2000 之后添加的任何 API。考虑到你的代码有多旧,这可能不是一个真正的问题。只需重命名 INPUT 或将您的类放在其自己的命名空间中即可继续前进。

于 2010-08-20T12:15:08.857 回答