2011-03-30 6 views
1

내 자신의 열거 형을 정의하고 싶습니다. 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 등과 일치 할 가능성이 있습니다.

CDT, MinGW32 및 SDL과 함께 Eclipse Helios를 사용하고 있습니다. 모든 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에 'INT'에서 유효하지 않은 변환 : 내 정의를 해제 이동하는 경우 <SDL/SDL.h>이 포함 된 후 오류가 사라졌습니다. SDL 코드의 GREP은 EXIT_SUCCESS와 일치하는 항목을 표시하지 않습니다.

+0

EXIT_SUCCESS는 stdlib.h에 정의되어 있습니다. 그래도 문제는 아닌 것 같습니다. 귀하의 오류에 명시 적으로 ExitType으로 캐스팅 할 수 없다고 나와 있습니다 (올바른 것, 변환에 명시 적 형변환이 필요함). ExitType에서 int 로의 변환은 내재적으로 수행 될 수 있습니다. –

+0

'EXIT_SUCCESS' 및'EXIT_FAILURE'와 (과) 충돌하여 헤더에 ''을 사용할 수 없다면 다른 사람들이 코드를 사용할 수 없다는 점에 유의하십시오. 그것은 단기적으로 당신에게 중요 할 수도 있고 그렇지 않을 수도 있지만, 습관을 가지지 마십시오. 아니면, 표준 이름을 재정의하는 것은 나쁜 생각입니다. –

답변

2

#undef EXIT_SUCCESS은 전처리 기 기호 EXIT_SUCCESS을 정의 해제해야합니다. 이는 내가 여기에서 진행되고 있다고 가정합니다. 그러나 이렇게하는 것만으로도 아무 것도 깨뜨리지 않을 것이라는 확신이 있다면 그렇게하십시오!

+0

제안 해 주셔서 감사합니다! 내가 프로젝트에서 계속 작업 할 때 아무 것도 보이지 않는지 알게 될 것입니다. – AngryPuffin

+0

일반적으로 EXIT_SUCCESS는 전처리 기 심볼로서 int "0"으로 정의되고 열거 형은 ints로 감쇠 될 수 있기 때문에 아무 것도 표시되지 않을 수 있습니다. EXIT_SUCCESS가 첫 번째 값입니다 열거 형에서 ... 그 정수 값이 0이라는 것을 의미합니다 ... 이것은 실제로 아무것도 변화하지 않는다는 것을 의미합니다! C++에서 프로그래밍한다고 가정하면 앞으로 네임 스페이스에 열거 형을 래핑하여이 문제를 피할 수 있습니다. –

관련 문제