본문 바로가기

프로그래밍/C++

[C++]헤더 선언에서 <iostream.h>와 <iostream>의 차이

입출력 헤더 <stdio.h>와 <iostream>

 C++에서 가장 기본적인 입출력 헤더는 <iostream>이다.

 분명 C를 처음 배웠을 때, 나를 비롯한 대부분의 초심자들에게 가장 익숙한 헤더는 <stdio.h>일 것이다.

 C++을 공부하는 지금, 왜 C++에서는 <iostream.h> 라고 사용하지 않는 것일까? 하는 의문이 들었다.

<iostream.h>과 <iostream>의 차이

 간단히 말하자면 ,

 <iostream.h>는 1998년 이전(C++ 표준안 확립 이전)의 관습적인 형태의 헤더 선언 형식이다.

 <iostream>은 1998년 이후(C++ 표준안 확립 이후)의 새로운 형태의 헤더 선언 형식이다.

 더 정확하게는,

 구성 요소들이 std 이름 공간(name space)에 소속되어 있는가 아닌가의 차이이다.

바뀌게 된 근본적인 이유?

 최초의 표준안 논의 과정에서 '이름 공간(name space)'가 포함되었고, 모든 표준 라이브러리의 요소들을 std 네임 스페이스에 포함시켜야 한다고 결정하였기 때문이다. (ISO/IEC 14882:1998)

 그렇다면 기존 헤더에 선언되어 있던 전역 요소들 때문에 더이상 같은 파일 이름을 사용해서는 안 되는 상황이 되었다.

 즉, 기존에 사용되던 모든 C++ 표준 라이브러리에 있는 모든 요소들을 std 네임 스페이스에 포함시키고 .h 확장자를 제거하여 헤더를 제공하는 것으로 표준안을 마련하였기 때문이라는 것이다.

 


결론

<iostream.h>는 버전 헤더 파일

<iostream>은 버전 헤더 파일이다.