관리 메뉴

드럼치는 프로그래머

[C/C++] #include <iostream>(신버전) VS #include <iostream.h>(구버전) 본문

★─Programing/☆─C | C++

[C/C++] #include <iostream>(신버전) VS #include <iostream.h>(구버전)

드럼치는한동이 2009. 9. 29. 01:44

#include <iostream> // 신버전

 

// using std::cout;
// using std::cin;
// using std::endl;

 

int main(void)
{
    std::cout<<"Hello World!!"<<std::endl;

// cout<<"Hello World!!"<<endl;  // using std::cout 주석을 풀어주면 std::를 빼고도 가능.
   return 0;
}

 

============================================================

 

#include <iostream.h> // 구버전(std:: 필요없음)

 

int main(void)
{
    cout<<"Hello World!!"<<endl;

    return 0;
}

 

=======================================================================

C++의 표준이 계속해서 바뀌어 간다는 것입니다.

예전의 C++ 컴파일러들은 모두 .h를 붙였고 이것이 당연했습니다만 최근에 C++에는 예전에는 없던

namespace, STL, exception, template 등 많은 것들이 추가 되었습니다. 이로 인해 불가피하게 기본적으로

C++에서 사용되던 runtime library들이 위의 새로운 기능과 호환되도록 새로 작성되었습니다.

그러다 보니 예전의 .h가 붙은 헤더파일들과 구분해야 할 필요성이 생긴 것입니다. 예전 헤더파일들과도

호환성을 유지해야 했으니까요.

그래서 새로 작성된 library들은 .h를 제거해서 구분하기로 하였습니다.

아주 최근의 컴파일러들은 (VC++ 2008 버전같은 경우) 아예 .h 버전의 헤더 파일들을 지원하지도 않습니다.

그래서 VC++ 2008 같은 경우 iostream.h 를 포함하면 아예 컴파일이 되지 않죠.

(VC++ 2003, 2005 같은 경우는 두 가지 버전이 모두 있었습니다.)

다만 stdio.h 나 stdlib.h 같은 C 용 헤더 파일들은 C 전용 프로그램들을 위해서 계속 남겨 두었습니다.

그러나 여기도 새로운 버전의 헤더파일들이 만들어져 있는데 그것들은 cstdio, cstdlib 과 같은 이름으로

존재합니다. C에는 두 가지 버전의 헤더파일들이 여전히 존재하는 것이죠.

결론적으로 현재는 컴파일러에 따라 다소 복잡하게 얽혀 있는 상황입니다만, 향후는 C++용 헤더 파일들은

.h가 없는 버전으로 통일될 것이고 C용 헤더 파일들은 당분간 두 가지 버전이 계속 사용될 것입니다.

                                                                                 - 출처 : 지식인 xtelite 님.


Comments