2026-01-15

C에서 C++로 넘어갈 때 헤더 개념 정리

C 언어를 사용하다가
C++을 처음 접하면서 헷갈렸던 헤더 개념을 정리한다.


1. 헤더(Header)란?

1-1. 헤더의 역할

헤더 파일은
컴파일러에게 어떤 함수, 클래스, 자료형을 사용할 것인지
미리 알려주는 선언부이다.

실제 구현은 다른 파일에 존재하며,
헤더는 “이런 기능이 있다”는 정보를 제공한다.


1-2. 왜 필요한가?

  • 코드 분리로 가독성 향상
  • 컴파일 단계에서 함수·클래스 존재 여부 확인
  • 여러 파일에서 동일 기능 재사용 가능

2. C 언어의 헤더 특징

2-1. C 헤더 예시

#include <stdio.h>
#include <stdlib.h>

2-2. 특징 정리

  • .h 확장자 사용
  • 전역 함수 중심 구조
  • 네임스페이스 개념 없음
  • 절차적 프로그래밍에 최적화

3. C++ 헤더의 특징

3-1. C++ 헤더 예시

#include <iostream>
#include <vector>

3-2. 특징 정리

  • 표준 라이브러리는 .h 확장자 없음
  • 모든 표준 기능은 std 네임스페이스에 포함
  • 객체지향 및 템플릿 기반 설계
  • 타입 안정성과 확장성 강화

4. C vs C++ 헤더 대응 관계

기능 C C++
입출력 stdio.h iostream
문자열 string.h string
수학 math.h cmath
메모리 stdlib.h cstdlib

5. <iostream>std

5-1. iostream의 역할

#include <iostream>
  • std::cin
  • std::cout
  • std::endl

C의 scanf, printf
객체 기반 입출력 방식으로 대체한다.


5-2. using namespace std; 의미

using namespace std;
  • std::coutcout
  • std::cincin

입문 단계에서는 가독성을 위해 사용해도 무방하다.


6. C 헤더를 C++에서 사용하는 경우

6-1. 사용 예시

#include <stdio.h>   // 가능하지만 비권장
#include <cstdio>    // C++ 권장 방식

6-2. 권장 이유

  • C++ 표준 네임스페이스(std) 적용
  • 타입 안정성 확보
  • C++ 규칙에 맞는 인터페이스 제공

7. 개념 한 줄 정리

  • C 헤더: 절차적 프로그래밍 중심
  • C++ 헤더: 객체지향 + 타입 안정성 강화
  • std: C++ 표준 라이브러리 네임스페이스

8. 개인 정리

C++ 헤더는
C 헤더를 그대로 사용하는 것이 아니라
더 안전하고 확장 가능한 방식으로 재설계된 표준 인터페이스라고 이해했다. C에서 C++로 넘어갈 때는
.h 유무, std 네임스페이스, 입출력 방식 차이만
명확히 인지해도 혼란이 크게 줄어든다.

results matching ""

    No results matching ""