[C언어/C++] iostream, iostream.h 차이점

1
2
3
4
5
6
7
8
#include <iostream.h>
 
int main() {
    
    cout << “Hello World!!” << endl;
 
    return 0;
}
cs
1
2
3
4
5
6
7
8
#include <iostream>
 
int main() {
    
    std::cout << “Hello World!!” << std::endl;
 
    return 0;
}
cs

C++ 코딩예제를 찾아다니다보면 어떤 예제는 <iostream>으로 작성이 되어있고 또 어떤 예제는 <iostream.h>로 작성이 되어있는걸 볼 수 있다.

그래서 이게 어떤 차이가 있는지 의문이 있을 수도 있는데 우선 결론부터 말하자면 C++에서는 <iostream>으로 작성을 하는것이 옳다.

<iostream.h>는 C++의 표준안이 확립되기 전에 관습처럼 사용되던 표준 입출력 라이브러리의 헤더였다.

하지만 표준안 논의 과정에서 namespace가 포함되고 모든 표준 라이브러리의 요소를 std 네임스페이스에 넣어야 한다고 결정함에 따라 기존 헤더에 선언되어 있던 전역 요소들 때문에 충돌이 일어날 수 있어서 더이상 같은 파일이름을 사용해서는 안되는 상황이 되었다.

그래서 기존의 모든 C++ 표준 라이브러리에 있던 모든 요소를 std 네임스페이스에 넣고 .h 확장자를 제거하여 제공하고 기존의 C 표준라이브러리의 요소 역시 .h 확장자를 제거하고 c접두사를 붙여 <time.h> -> <ctime>과 같이 표현하여 제공하게 되었다.

물론 기존의 C 표준라이브러리의 경우는 <time.h>의 형태로 사용해도 컴파일에는 문제가 없긴 하지만 결론적으로 .h 확장자가 붙는 헤더는 과거의 관습을 따르던 것이기에 C++에선 C++의 표준을 따르는 것이 옳지 않을까 그렇게 생각한다.

관련글

제목 작성자 작성일