과거에는 입력 및 출력에 관한 일을 하기 위해서 다음과 같이 헤더파일을 선언하였다.

#include <iostream.h>

그러나 새로운 C++ 표준의 도입 이후 다음 두 가지 이유로 새로운 표준 라이브러리의 사용을 목적으로 하는 헤더파일의 포함에는 확장자를 생략하기로 하였다.

  1. 과거의 표준 라이브러리와 새로운 표준 라이브러리를 구분하기 위해
  2. 새로운 표준 라이브러리를 사용하는 형태로 소스코드를 쉽게 변경할 수 있도록 하기 위해

때문에 <iostream.h>는 과거의 표준 입출력 라이브러리 및 헤더를 의미하는 것으로 통용이 되고, <iostram>은 새로운 표준 입출력 라이브러리 및 헤더를 의미하는 것으로 통용이 된다. 참고로 C++ 컴파일러는 점차 <iostream.h>을 지원하지 않는 추세로 접어들었다.


C 언어 라이브러리에 포함되어 있는 대부분의 헤더들은 C++ 언어에서도 사용할 수 있다.
헤더파일의 확장자인 .h를 생략하고 앞에 c를 붙이면 C 언어에 대응하는 C++의 헤더파일 이름이 된다.

#include <stdio.h> -> #include <cstdio>
#include <stdlib.h -> #include <cstdlib>
#include <math.h> -> #include <cmath>
#include <string.h> -> #include <cstring>

참고로 C++ 언어에서도 stdio.h 같은 C 언어의 헤더를 사용할 수 있다. C++ 언어에서 이와 같은 형태로 함수호출을 허용하는 이유는 ‘하위 버전과의 호환성(backwards compatibility)‘을 제공하기 위해서이다. 하지만 C++ 표준 헤더는 C++ 문법을 기반으로 개선된 형태로 라이브러리가 구성되어 있으므로, 가급적 C++의 표준헤더를 이용해서 함수를 호출하는 것이 좋다.


참고자료

윤성우의_열혈_cpp_프로그래밍