2011-03-05 4 views
0

MVisualC++ 2010에서 작업하고 있는데 "main"을 정의 해제하려고하면 결과가없고 평상시처럼 콘솔이 시작됩니다. 일부 누락 된 진입 점 오류 또는 뭔가 기대했다. 왜 그럴까요?#undef main 결과가 없습니다.

#undef main 
int main() 
{ 
} 

답변

7

메인은 처음에는 #define이 아닙니다. #undef은 전혀 변경되지 않습니다.

#define foo bar은 전 처리기에 "foo의 모든 발생을 막대로 바꾸십시오"라고 알려줍니다. #undef foo 당신이 링커 오류를 원하는 경우

, 가령하는 main 이름을 바꿉니다 "foo는 그대로두고, 더 이상 특별한 의미가 없다"전처리를 알려줍니다 main2 또는 예를 들어. 이 :

void foo(); 
int main() { 
    foo(); 
} 

이것은 foo 기능 (하지만하지 무엇을)을 존재하는 컴파일러를 알려줍니다. main은 그것을 사용하려고 시도하므로 링커는 찾을 수 없을 때 오류를 발생시킵니다.

+0

그래서 SDL을 사용하는 동안 main을 undef하면 SDL로 구현 된 것과 함께 표준 라이브러리에서 작동하지 않습니까? – Neomex

+0

누군가가 main을 정의하지 않는다고 말하면, "main function을 만들지 말라"는 뜻입니다. 정의라는 용어는'#define'과 같지 않습니다. 이것은 "이 함수/변수 생성"을 의미합니다. – Erik

+0

SDL에서는 이것을 사용하지 않지만 #define을 사용하여 main . #undef는이 경우 이름 바꾸기를 취소하고 SDL 자체의 'main'은 호출되지 않습니다. – Erik

관련 문제