我想定义我自己的枚举类型:ExitType。我这样写:我可以取消定义EXIT_SUCCESS吗?
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:错误:从 '诠释' 到 'ExitType'
编辑2无效转换:当我移动取消定义在包含<SDL/SDL.h>后,错误消失。尽管如此,SDL代码的GREP却没有出现与EXIT_SUCCESS匹配的任何内容。
EXIT_SUCCESS在stdlib.h中定义。这似乎不是你的问题,但。你的错误说你不能隐式地转换成ExitType(这是正确的,该转换需要显式转换)。从ExitType到int的转换可以隐式完成。 – 2011-03-30 01:26:02
请注意,如果由于与“EXIT_SUCCESS”和“EXIT_FAILURE”的冲突而无法使用“”,那么您将无法让其他人使用您的代码。在短期内这对你来说可能并不重要,但不要养成它的习惯。或者,IOW,重新定义标准名称是一个坏主意。 –
2011-03-30 01:52:44