C++ 빌드 및 컴파일
Coddy C++ 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 104개 중 2번째.
C++는 전처리(Preprocessing), 컴파일(Compilation), 링크(Linking)의 세 단계로 빌드됩니다.
1. 전처리(Preprocessing) — #include 지시문이 해석되어, 헤더 내용을 소스 파일에 복사합니다.
#include <iostream> // 시스템 헤더
#include "my_file.h" // 사용자 정의 헤더2. 컴파일 — 각 .cpp 파일은 독립적으로 오브젝트 파일(.o)로 컴파일됩니다
// math_utils.cpp는 math_utils.o로 컴파일됩니다
// main.cpp는 main.o로 컴파일됩니다3. 링킹(Linking) — 오브젝트 파일들이 최종 실행 파일로 결합됩니다
// math_utils.o + main.o → program.exe헤더 파일은 무엇이 존재하는지 선언합니다(프로토타입). .cpp 파일은 실제 구현을 제공합니다. 링커는 main.cpp의 호출을 다른 .cpp 파일의 구현과 연결합니다.
챌린지
중급헤더 파일 math_utils.h는 두 개의 함수를 선언합니다. math_utils.cpp에 이 함수들을 구현하세요:
doubleValue(int x)—x * 2를 반환합니다square(int x)—x * x를 반환합니다
.cpp 파일에 헤더 파일을 포함해야 합니다.
치트 시트
C++ 빌드는 전처리(Preprocessing), 컴파일(Compilation), 링킹(Linking)의 세 단계로 이루어집니다.
전처리(Preprocessing) — #include 지시문이 해석되어, 헤더 파일의 내용이 소스 파일로 복사됩니다:
#include <iostream> // 시스템 헤더
#include "my_file.h" // 사용자 정의 헤더컴파일(Compilation) — 각 .cpp 파일은 독립적으로 오브젝트 파일(.o)로 컴파일됩니다:
// math_utils.cpp는 math_utils.o로 컴파일됩니다
// main.cpp는 main.o로 컴파일됩니다링킹(Linking) — 오브젝트 파일들이 결합되어 최종 실행 파일이 생성됩니다:
// math_utils.o + main.o → program.exe헤더 파일은 무엇이 존재하는지 선언합니다(프로토타입). .cpp 파일은 실제 구현을 제공합니다. 링커는 main.cpp에서의 호출을 다른 .cpp 파일에 있는 구현과 연결합니다.
직접 해보기
#include <iostream>
#include "math_utils.h"
int main() {
int num;
std::cin >> num;
std::cout << "Double: " << doubleValue(num) << std::endl;
std::cout << "Square: " << square(num) << std::endl;
std::cout << "Build successful" << std::endl;
return 0;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.