[프로그램] C++, 헤더(.h) 파일을 사용하지 않는 이유?

 Why isn't .h used in C++?

Header file

목차

  • 역사적 이유
  • 현대 C++ 헤더 파잉ㄹ
  • 표준 라이브러리의 관례
  • 프로젝트나 회사 내부 규칙
  • 마지막으로 (의견)

C++에서 .h 파일 확장자가 흔히 사용되지 않는 이유는 주로 관례와 명확성 때문입니다. 몇 가지 주요 이유를 설명하면 다음과 같습니다.


| 역사적 이유

  • C 언어에서는 헤더 파일에 주로 .h 확장자를 사용하여 함수, 매크로, 상수, 타입 등을 선언합니다. C++은 C에서 발전했기 때문에 초기에는 C++도 .h 확장자를 그대로 사용했습니다.
  • 하지만 C++이 발전하면서 C와 차별성을 두려는 움직임이 생겼고, C++ 표준 라이브러리에서는 .h를 생략한 헤더 파일 형식을 도입했습니다. 예를 들어, C++에서는 <iostream.h> 대신 <iostream>을 사용합니다. 이는 C++에서 추가된 네임스페이스, 템플릿, 강력한 타입 체크 기능을 반영한 것입니다.

| 현대 C++ 헤더 파일

  • 현대 C++에서는 .hpp 확장자를 사용하는 것이 일반적입니다. 이렇게 하면 C 언어의 헤더 파일과 C++의 헤더 파일을 명확히 구분할 수 있습니다. 예를 들어, 어떤 프로젝트에서는 C 언어용 파일은 .h를, C++ 파일은 .hpp를 사용해 코드의 언어 차이를 분명히 드러냅니다.

| 표준 라이브러리의 관례

  • C++ 표준 라이브러리에서는 .h 확장자가 없는 헤더 파일을 사용하는 경우가 많습니다 (예: <string>, <vector>). 이는 단순 선언만 포함하는 것이 아니라 템플릿, 인라인 함수 등 다양한 기능을 제공하며, C++ 전용 라이브러리임을 나타내기 위한 관례입니다.

| 프로젝트나 회사 내부 규칙

  • 많은 C++ 프로젝트에서는 .hpp.hh 같은 확장자를 사용하여 코드를 체계적으로 정리하고, C와 C++ 간의 혼동을 피하려는 스타일적 이유가 큽니다.

| 마지막으로

 정리하자면, C++에서 여전히 .h 확장자를 사용할 수 있지만, 현대 C++에서는 .hpp를 선호하거나, 표준 라이브러리의 경우 아예 확장자를 사용하지 않는 것이 일반적입니다. 이는 C와 C++ 코드 간의 혼동을 줄이고 더 명확하게 구분하려는 이유가 큽니다.

 점차 Component 타입의 코드들로 변화가 되어가는 분위기 이네요. 저는 개인적으로 c타입의 코드들이 익숙하지만, C++타입의 캡슐화, 네임스페이스, 템플릿, 타입 체크 기능들이 많이 들어가서 혼돈을 줄이고자 하는 것으로 보입니다. 예전에 성능 위주였다면, 현재는 HW의 성능이 많이 높아지다보니, 안정성과 효율성을 더 중요시하는 분위기로 변경되는 것으로 보입니다.

 감사합니다.

댓글

이 블로그의 인기 게시물

[컴퓨터] Office 무료 설치

[컴퓨터] iptime 관리자계정 찾기 및 설정

[주식] 레버리지 ETF/ETN 사전교육 이수방법 및 등록