【发布时间】:2011-03-30 00:53:17
【问题描述】:
我想定义我自己的枚举类型:ExitType。我是这样写的:
enum ExitType{
EXIT_SUCCESS,
EXIT_FAILURE,
EXIT_OTHERTYPE
};
我有一个返回 ExitType 的函数。在某些情况下,它会返回 EXIT_SUCCESS。但我收到错误消息,您无法将 int 转换为 ExitType。我可以为我的 IDE 取消定义 EXIT_SUCCESS,还是我卡在使用static_cast<int>(EXIT_SUCCESS)?好像介绍了他们的EXIT_SUCCESS会和我的EXIT_OTHERTYPE等对齐的可能性。
我将 Eclipse Helios 与 CDT、MinGW32 和 SDL 一起使用。所有 32 位和最新版本。
编辑:尝试使用预处理器取消定义 EXIT_SUCCESS。
#undef EXIT_SUCCESS
#undef EXIT_FAILURE
enum ExitType{
EXIT_SUCCESS,
EXIT_FAILURE,
EXIT_OTHERTYPE,
EXIT_NOEXIT
};
结果:
..\src\EventManager.cpp:12:7: 错误:从“int”到“ExitType”的无效转换
编辑 2:当我在包含
【问题讨论】:
-
EXIT_SUCCESS 在 stdlib.h 中定义。不过,这似乎不是你的问题。您的错误表明您不能从 into 隐式转换为 ExitType (这是正确的,该转换需要显式转换)。从 ExitType 到 int 的转换可以隐式完成。
-
请注意,如果由于与
EXIT_SUCCESS和EXIT_FAILURE的冲突而无法将<stdlib.h>与您的标头一起使用,您将无法让其他人使用您的代码。这在短期内可能对你很重要,也可能无关紧要,但不要养成习惯。或者,IOW,重新定义标准名称是个坏主意。
标签: eclipse enums mingw c-preprocessor