在 VC++9 项目中使用自定义枚举会导致编译错误
我正在从事从 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 的问题。
I am working in a migration project from VC++6 to VC++9. I am using Custom Enum in a VC++9 project causes a compilation error as it is duplicating with mfc base class winuser.h.
Sample code:-
enum CHKTYPE{ INPUT, READER, BOTH_IR };
Error:-
error C2365: 'INPUT' : redefinition; previous definition was 'typedef'.
c:\program files\microsoft sdks\windows\v6.0a\include\winuser.h(5292) : see declaration of 'INPUT'
This is not a problem with VC++6.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您曾经使用非常版本的 Windows SDK 来编译代码。 VC6 甚至比 Windows XP 还要早,该操作系统添加了 SendInput() API 函数。
您可以使用以下方法解决您的问题
,但是您将无法使用 Windows 2000 之后添加的任何 API。考虑到您的代码有多旧,这可能不是一个真正的问题。只需重命名 INPUT 或将类放入其自己的命名空间中即可继续前进。
You used to compile your code with a very old version of the Windows SDK. VC6 is even older than Windows XP, the operating system that added the SendInput() API function.
You could work around your problem with
But you then cannot use any APIs that were added after Windows 2000. Probably not a real problem considering how old your code is. Move ahead by just renaming INPUT or by putting your class in its own namespace.