我想定義我自己的枚舉類型: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