Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 번역 단위(Translation Unit)란 무엇일까?

C++에서 번역 단위란?

번역 단위(Translation Unit)란 전처리(preprocessing)를 거친 소스 파일을 의미합니다. 쉽게 말해, 컴파일러가 실제로 입력으로 받아 처리하는 하나의 완전한 코드 덩어리라고 이해할 수 있습니다.

번역 단위의 구성

번역 단위는 C++에서 컴파일의 기본 단위입니다. 이 단위는 다음 과정을 거쳐 만들어집니다.

  • 하나의 소스 파일(.cpp)이 전처리기를 통과합니다.
  • #include 지시문에 의해 포함된 모든 헤더 파일의 내용이 해당 위치에 그대로 확장되어 삽입됩니다.
  • #ifdef, #ifndef 등의 조건부 전처리 지시문에 의해 제외된 코드 블록은 최종 결과에서 제거됩니다.

즉, 전처리가 끝난 시점의 소스 파일 전체 내용이 곧 하나의 번역 단위가 되는 것입니다.

번역 단위의 활용

하나의 번역 단위는 개별적으로 컴파일되어 다음과 같은 형태로 만들어질 수 있습니다.

  • 오브젝트 파일(Object File): 컴파일러가 생성하는 중간 산출물
  • 라이브러리(Library): 여러 오브젝트 파일을 묶은 재사용 가능한 코드 집합
  • 실행 프로그램(Executable): 링커를 통해 완성된 최종 실행 파일

대규모 프로젝트에서는 여러 개의 번역 단위가 각각 독립적으로 컴파일된 후, 링커(Linker)가 이들을 하나로 연결하여 최종 프로그램을 완성합니다. 따라서 번역 단위의 개념을 정확히 이해하는 것은 C++의 컴파일 및 링크 과정, 그리고 ODR(One Definition Rule) 같은 핵심 규칙을 이해하는 데 매우 중요한 기초가 됩니다.