입출력 헤더 <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>은 신버전 헤더 파일이다.