1. 기초
- C++에서는 이러한 파일들을 사용하여 코드의 구조를 체계적으로 관리하고, 컴파일 과정을 통해 최종 실행 파일을 생성
- 역할:
.h
파일은 헤더 파일이라고 불리며,
- 함수, 클래스, 변수 등의 선언을 포함
- 이 파일은 코드의 인터페이스를 정의하는 데 사용
- 기능:
- 다른 파일이나 모듈에서 사용될 함수나 클래스의 서명을 정의
- 하지만 실제로 그 함수나 클래스가 어떻게 동작하는지에 대한 구현(정의)은 포함하지 않음
예시: calculator.h
- 아래 예시에서
calculator.h
는 Calculator
클래스의 선언을 포함
- 클래스 안에는
add
와 subtract
라는 두 개의 함수가 정의되어 있지만, 이 함수들이 실제로 어떻게 작동하는지는 설명되지 않았음
#ifndef CALCULATOR_H
#define CALCULATOR_H
class Calculator {
public:
int add(int a, int b);
int subtract(int a, int b);
};
#endif
2. .cc
파일 (Implementation File)
- 역할:
.cc
파일은 구현 파일이라고 불리며, 주로 .h
파일에 선언된 함수나 클래스의 구현(정의)을 포함합니다.
- 기능:
.h
파일에 선언된 함수와 클래스가 실제로 어떻게 동작하는지에 대한 구체적인 코드를 제공
예시: calculator.cc
#include "calculator.h"
int Calculator::add(int a, int b) {
return a + b;
}
int Calculator::subtract(int a, int b) {
return a - b;
}
- 위 예시에서
calculator.cc
파일은 calculator.h
에서 선언된 Calculator
클래스의 add
와 subtract
함수가 실제로 어떻게 동작하는지 구현
- 이 파일에서는
add
함수가 두 숫자를 더하고, subtract
함수가 두 숫자를 뺀다는 것이 구체적으로 설명
프로그램을 동작시키기 위한 과정
- 작성: 개발자는
.h
파일에 인터페이스를 선언하고, .cc
파일에 구현을 작성
- 컴파일(Compile): C++ 컴파일러는
.cc
파일들을 컴파일
.cc
파일은 컴파일되어 객체 파일(.o 또는 .obj 파일)로 변환
- 이때,
.h
파일은 컴파일되지 않고, 단지 컴파일러가 .cc
파일을 컴파일할 때 필요한 선언을 제공하는 역할
- 링킹(Link):
- 컴파일된 객체 파일들(.o 또는 .obj 파일)을 링크하여 하나의 실행 가능한 프로그램으로 만듦
- 이 단계에서, 여러 객체 파일들이 결합되고, 프로그램의 실행에 필요한 모든 코드가 하나의 바이너리 파일로 생성
- 실행: 최종적으로 생성된 실행 파일을 실행하여 프로그램을 동작
요약
.h
파일(헤더 파일):
- 클래스와 함수의 인터페이스를 선언
- 다른 파일에서 공통으로 사용
.cc
파일(구현 파일):
- 헤더 파일에 선언된 클래스와 함수의 구체적인 동작을 구현
- 컴파일 과정:
- 컴파일러는
.cc
파일을 객체 파일로 변환하고, 링커는 이를 결합하여 최종 실행 파일을 생성