code_seg pragma

함수가 개체(.obj) 파일에 저장되는 텍스트 섹션(세그먼트)을 지정합니다.

구문

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

매개 변수

push
(선택 사항) 내부 컴파일러 스택에 레코드를 배치합니다. A push 는 식별자섹션 이름을 가질 수 있습니다.

pop
(선택 사항) 내부 컴파일러 스택의 맨 위에서 레코드를 제거합니다. A pop 는 식별자섹션 이름을 가질 수 있습니다. 식별자를 사용하여 하나의 pop 명령만 사용하여 여러 레코드를 팝업할 수 있습니다. 섹션 이름은 팝 뒤의 활성 텍스트 섹션 이름이 됩니다.

identifier
(선택 사항) 사용할 push경우 내부 컴파일러 스택의 레코드에 이름을 할당합니다. 이때 pop지시문은 식별자가 제거될 때까지 내부 스택에서 레코드를 팝합니다. 내부 스택에서 식별자를 찾을 수 없으면 아무 것도 표시되지 않습니다.

"section-name"
(선택 사항) 섹션의 이름입니다. 함께 pop사용하면 스택이 팝되고 섹션 이름이 활성 텍스트 섹션 이름이 됩니다.

"section-class"
(선택 사항) 무시되지만 버전 2.0 이전의 Microsoft C++ 버전과의 호환성을 위해 포함됩니다.

설명

개체 파일의 섹션은 메모리에 단위로 로드되는 명명된 데이터 블록입니다. 텍스트 섹션은 실행 코드를 포함하는 섹션입니다. 이 문서에서 용어 세그먼트섹션 은 동일한 의미를 갖습니다.

지시문은 code_segpragma 번역 단위의 모든 후속 개체 코드를 section-name이라는 텍스트 섹션에 넣도록 컴파일러에 지시합니다. 기본적으로 개체 파일의 함수에 사용되는 텍스트 섹션의 이름은 .text다음과 같습니다. code_segpragma section-name 매개 변수가 없는 지시문은 후속 개체 코드의 텍스트 섹션 이름을 .로 .text다시 설정합니다.

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

섹션을 만드는 데 사용할 수 없는 이름 목록은 다음을 참조하세요 /SECTION.

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

DUMPBIN.EXE 애플리케이션을 사용하여 개체 파일을 볼 수 있습니다. 지원되는 각 대상 아키텍처에 대한 DUMPBIN 버전은 Visual Studio에 포함됩니다.

예시

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

// 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() {
}

참고 항목

code_seg (__declspec)
Pragma 지시문 및 __pragma_Pragma 키워드(keyword)