다음을 통해 공유


code_seg

함수가 .obj 파일에 저장되는 텍스트 세그먼트를 지정합니다.

#pragma code_seg( [ [ { push | pop }, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )

설명

code_seg pragma 지시문은 인스턴스화된 템플릿에 대해 생성된 개체 코드와 특수 멤버 함수 등 컴파일러로 암시적으로 생성된 코드의 배치를 제어하지 않습니다. 대신에 모든 개체 코드의 배치에 대해 제어를 할 수 있는 __declspec(code_seg(...)) 특성을 사용하는 것이 좋습니다. 여기에는 컴파일러에서 생성된 코드가 포함됩니다.

.obj 파일의 세그먼트는 메모리에 하나의 단위로 로드된 명명된 데이터 블록입니다. 텍스트 세그먼트는 실행 코드가 포함된 세그먼트입니다. 이 문서에서 세그먼트 및 섹션이라는 용어는 같은 의미로 사용됩니다.

code_seg pragma 지시문은 변환 단위의 모든 이후의 개체 코드를 segment-name라는 텍스트 세그먼트로 배치하도록 컴파일러에 지시합니다. 기본적으로 .obj 파일의 함수에 사용되는 텍스트 세그먼트는 .text로 명명됩니다.

매개 변수가 없는 code_seg pragma 지시문은 이후 개체 코드의 텍스트 세그먼트 이름을 .text로 다시 설정합니다.

  • Push(선택적 요소)
    내부 컴파일러 스택에 기록합니다. push에는 identifier 및 segment-name이 포함될 수 있습니다.

  • pop(선택적 요소)
    내부 컴파일러 스택 맨 위에서 기록을 제거합니다.

  • identifier(선택적 요소)
    push와 함께 사용할 때 내부 컴파일러 스택의 레코드에 이름을 할당합니다. pop과 함께 사용할 때 identifier가 제거될 때까지 내부 스택에서 레코드를 팝합니다. identifier가 내부 스택에 없으면 아무 것도 팝되지 않습니다.

    identifier를 사용하면 여러 레코드가 하나의 pop 명령으로 팝될 수 있습니다.

  • "segment-name"(옵션)
    세그먼트의 이름입니다. 스택은 pop과 함께 사용하면 팝되고 segment-name이 활성 텍스트 세그먼트 이름이 됩니다.

  • "segment-class"(옵션)
    무시되지만 2.0 이전 버전의 C++ 버전과의 호환성을 위해 포함되었습니다.

DUMPBIN.EXE 응용 프로그램을 사용하여 .obj 파일을 볼 수 있습니다. 지원되는 각 대상 아키텍처의 DUMPBIN 버전은 Visual Studio에 포함되어 있습니다.

예제

이 예제에서는 code_seg pragma 지시문을 사용하여 개체 코드를 배치하는 위치를 제어하는 방법을 보여 줍니다.

// pragma_directive_code_seg.cpp
void func1() {                  // stored in .text
}

#pragma code_seg(".my_data1")
void func2() {                  // stored in my_data1
}

#pragma code_seg(push, r1, ".my_data2")
void func3() {                  // stored in my_data2
}

#pragma code_seg(pop, r1)      // stored in my_data1
void func4() {
}

int main() {
}

섹션을 만들 때 사용할 수 없는 이름 목록은 /SECTION을 참조하십시오.

초기화된 데이터(data_seg), 초기화되지 않은 데이터(bss_seg) 및 상수 변수(const_seg)에 대한 섹션도 지정할 수 있습니다.

참고 항목

참조

code_seg (__declspec)

Pragma 지시문 및 __Pragma 키워드