2014-04-08 1 views
1

그것은, 그것은 단순히 심지어 "안녕하세요!"되지 않습니다 :iostream.h가 실행 파일의 무게를 1MB 더 늘리는 이유는 무엇입니까?

1천80킬로바이트 무게
#include <iostream> 

int main() 
{ 
    return 0; 
} 

. 내가 얻을 수있는 프로그램에서 iostream의 포함을 제거하면

int main() 
{ 
    return 0; 
} 

실행 파일의 크기는 49킬로바이트된다. 난 단지 iostream을 포함하고 싶을뿐, 아마도 std :: cout만을 사용하고 싶지만 크기는 다시 전체 메가 바이트가 될 것이다. 그래서 문제는 어디에서 어떻게 해결할 수 있습니까? 추신 : mingW와 함께 wxDevCpp를 사용 중이며 디버깅 정보 기능이 꺼져 있습니다. 감사합니다.

+1

정말로 최적화가 적용된 릴리즈 용으로 컴파일 하시겠습니까? –

+1

그것은 당신이 얻는 것에 대해 돈을 지불하기 때문입니다. I/O 스트림 구현은 "std :: cout 만"사용하는 경우에도 상당히 큽니다. –

+1

iostream을 포함하면 실행 파일의 크기가 커진다는 것이 정상입니다. 특히 템플릿이 있고 템플릿의 크기가 비싸다고 생각하면됩니다. – cnluzon

답변

4

그렇다면 어디에서 문제가 발생하며 어떻게 해결해야합니까? 포함하여 <iostream>

는 전역 변수 std::cout, std::cinstd::cerr, 따라서에게 전체 C++ I/O 라이브러리에 링크를 인스턴스화합니다.

거기에서 아무 것도 필요하지 않으면 <iostream>을 포함하지 않습니다.

+0

하지만 std :: cout 이외에 아무것도 사용하지 않으려면 어떻게해야합니까? std :: cout 만 포함하는 방법이 있습니까? – user3496846

+0

아마도 더 명확하게 : 예,하지만 std :: cout은 많은 일을해야합니다. – deviantfan

+0

@ user3496846 _ 'std :: cout 만 포함하는 방법이 있습니까?'_ 간단히 말해서 : 안돼! –