在 VC++9 项目中使用自定义枚举会导致编译错误

发布于 2024-09-15 18:33:10 字数 408 浏览 3 评论 0原文

我正在从事从 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

滥情空心 2024-09-22 18:33:11

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

您可以使用以下方法解决您的问题

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

,但是您将无法使用 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

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文