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::cinstd::coutstd::endl
C의 scanf, printf를
객체 기반 입출력 방식으로 대체한다.
5-2. using namespace std; 의미
using namespace std;
std::cout→coutstd::cin→cin
입문 단계에서는 가독성을 위해 사용해도 무방하다.
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 네임스페이스, 입출력 방식 차이만
명확히 인지해도 혼란이 크게 줄어든다.