다음을 통해 공유


변환 단계

C 및 C++ 프로그램은 각각 일부 프로그램의 텍스트를 포함하는 하나 이상의 소스 파일로 구성됩니다. #if와 같은 조건부 컴파일에서 제거된 코드 섹션을 제외하고 include 파일(#include 전처리기 지시문을 사용하여 포함된 파일)을 포함하는 소스 파일을 "변환 단위"라고 합니다.

소스 파일은 다른 표준 시간대에 변환될 수 있습니다. 일반적으로 오래된 파일만 변환합니다. 변환된 변환 단위는 별도의 개체 파일 또는 개체 코드 라이브러리에서 처리될 수 있습니다. 이러한 별도 변환된 변환 단위는 실행할 수 있는 프로그램 또는 동적 연결 라이브러리(DLL)의 형태로 연결됩니다. 링커에 대한 입력으로 사용할 수 있는 파일에 대한 자세한 내용은 LINK 입력 파일을 참조하십시오.

변환 단위는 다음을 사용하여 통신할 수 있습니다.

  • 외부 링크가 있는 함수를 호출합니다.

  • 외부 링크가 있는 클래스 멤버 함수를 호출합니다.

  • 외부 링크가 있는 개체를 직접 수정합니다.

  • 파일을 직접 수정합니다.

  • 프로세스 간에 통신합니다(Microsoft Windows 기반 응용 프로그램만).

다음 목록은 컴파일러가 파일을 변환하는 단계를 나타냅니다.

  • 문자 매핑
    소스 파일 내의 문자는 내부 소스 표현과 매핑됩니다. 삼중자 시퀀스는 이 단계에서 단일 문자 내부 표현으로 변환됩니다.

  • 줄 결합
    백슬래시(\)로 끝난 다음 바로 줄 바꿈 문자가 오는 모든 줄은 실제 줄에서 논리적 줄을 형성하는 소스 파일 내에서 다른 줄과 연결됩니다. 비어 있지 않은 경우 소스 파일은 백슬래시가 앞에 나오지 않는 줄 바꿈 문자에서 끝나야 합니다.

  • 토큰화
    소스 파일은 전처리 토큰 및 공백 문자로 나뉩니다. 소스 파일의 설명은 하나의 공백 문자로 각각 대체됩니다. 줄 바꿈 문자는 그대로 유지됩니다.

  • 전처리
    전처리 지시문이 실행되고 매크로는 소스 파일에 확장됩니다. #include 문은 포함된 모든 텍스트에서 이전 세 가지 변환 단계로 시작하는 변환을 호출합니다.

  • 문자 집합 매핑
    모든 문자 집합 멤버와 이스케이프 시퀀스는 실행 문자 집합에서 동등하게 변환됩니다. Microsoft C 및 C++의 경우 소스 및 실행 문자 집합 모두 ASCII입니다.

  • 문자열 연결
    모든 인접 문자열과 와이드 문자열 리터럴은 연결되어 있습니다. 예를 들어, "String " "concatenation"은 "String concatenation"이 됩니다.

  • 변환
    모든 토큰은 구문적 그리고 의미적으로 분석됩니다. 이러한 토큰은 개체 코드로 변환됩니다.

  • 링크
    모든 외부 참조는 실행 프로그램 또는 동적 연결 라이브러리를 만들기 위해 확인됩니다.

컴파일러에서 구문 오류가 발생하는 변환 단계 중 경고 또는 오류가 발생합니다.

링커는 모든 외부 참조를 확인하고 표준 라이브러리에 따라 하나 이상의 별도 처리되는 변환 단위를 결합하여 DLL 또는 실행 프로그램을 만듭니다.

참고 항목

참조

전처리기