2011-07-03 7 views
1

나는 생성자에서 간단히 다음을 수행하는 클래스가 있습니다. printf ("Hello"); main() 함수 외부에서 해당 클래스의 인스턴스를 만들면 "Hello"가 디버그 메뉴에 나타나지 않습니다. 그러나 main() 함수 내부에서 클래스의 인스턴스를 만들면 "Hello"가 실제로 나타납니다.C++ main() 함수 외부에서 클래스의 인스턴스 만들기

왜 main() 함수 내부에서 만들어야합니까? main() 함수 외부에 넣을 때 작동하게 할 수있는 방법이 있습니까? 내가 디버그 콘솔이 printf의 출력을 수신 할 준비가되기 전에 생성자가 실행 상상 클래스의 정적 예를 들어

int main(){ 
    SomeClass instance; 
} 
+1

어떤 컴파일러를 사용하고 있습니까? –

+0

'main' 함수에서 전역 객체를 사용하려고합니다. 아마도 컴파일러는 전역 객체를 사용하지 않았기 때문에 최적화했을 것입니다. 또는 전역을'static const'로 만듭니다. 어떤 최적화 옵션을 사용하고 있습니까? –

답변

3

:에

SomeClass instance; 

int main(){ 

} 

비교. 이 종류의 코드는 아마도 구현에 따라 매우 다를 수 있습니다.

+0

아마도 수신 측이 아닌 송신 측일 것입니다. 'stdout'은 아직 초기화되지 않았을 수도 있습니다. –

+0

나는 자식 프로세스가 시작되기 전에 파일 디스크립터가 부모 프로세스에 의해 초기화된다고 생각한다. 그래서 왜 stdout은 초기화되지 않았을까? – Chris

관련 문제