this question의 많은 예제에서 볼 수 있듯이 main
이 호출되기 전에 코드를 실행할 수 있습니다.main보다 먼저 프로그램을 종료하는 것이 잘 정의 된 동작입니까?
그러나 사전 주 코드에서 프로그램이 std::exit
또는 std::abort
을 통해 종료하라는 메시지가 표시되면 어떻게됩니까? main
은 프로그램의 시작으로 정의되었으므로 시작하기 전에 종료하면 어떤 결과가 발생합니까? 각 섹션에서 뭔가를 인쇄하면
, 나는 다음과 같은 결과를 얻을 :
형식 :
제 : output
홈페이지 : main
초기화 (전에 호출 주) :(초기화 내부 std::atexit
로 설정)
종료 : exiting
샘플 실행은 :
초기화가 종료하지 않고 전화 :
초기화를
초기화
0을 반환초기화는 표준 전화 :명 주요
0을 반환
초기화 (0) 표준 : 출구를 호출 : 중단 :
초기화
충돌 및 GCC 4.7과 Windows에서 3을 반환합니다.2
충돌과는 LiveWorkSpace에
0을 반환 VS11와 일반적인 상자가 나타납니다
초기화 핸들러를 설정하고 표준 : : 종료 (0) 전화 :
을 초기화
종료
반환 0
초기화가 핸들러를 설정하고 호출 표준 : 중단 :
초기화
검색하는 동안, 나는이 질문을보고
핸들러없이 같은 같은 거래 : Is there any way a C/C++ program can crash before main()?. 그러나 그것은 내가 알고 자하는 것에 대답하지 않습니다 : std::exit
또는 std::abort
을 main
앞에 잘 정의 된이 동작이 있습니까? 이 정의되지 않은 동작이 있습니까?
테스트를 결합한 샘플에 관심이 있으시면 [여기에 있습니다] (http://liveworkspace.org/code/ff19b767d545e3c8a76671b1d21add00). – chris