분할 컴파일(Separate Compilation)

소스 코드를 선언부와 구현부(정의부)를 독립된 파일로 나누어 관리하고 컴파일하는 기법

파일 종류 확장자 역할
헤더 파일 .h 선언(Declaration)
소스 파일 .cpp 구현/정의(Definition)
main 파일 .cpp 사용(Execution)

분할 컴파일하는 이유

분할 컴파일의 흐름

  1. 컴파일(Compile) : 각 소스 파일들을 개별적으로 기계어로 번역하여 목적 파일(.obj, .o)을 생성
  2. 링킹(Linking) : 링커(Linker)가 목적 파일들을 하나로 묶어 최종 실행 파일(.exe)을 생성

중복 정의(Multiple Definition) 문제

헤더 파일에 구현까지 작성하면 분할 컴파일의 핵심인 독립성이 없어지면 중복 정의 에러가 발생

#pragma once

int globalValue = 10;

int add(int a, int b)
{
	return a + b;
}
#include "function.h"
#include "function.h"

int main()
{
    return 0;
}