const_seg
pragma
const 변수가 개체(.obj) 파일에 저장되는 섹션(세그먼트)을 지정합니다.
구문
#pragma const_seg(
[ "section-name" [,
"section-class" ] ])
#pragma const_seg(
{push
|pop
} [,
identifier ] [,
"section-name" [,
"section-class" ] ])
매개 변수
push
(선택 사항) 내부 컴파일러 스택에 레코드를 배치합니다. A push
는 식별자 및 섹션 이름을 가질 수 있습니다.
pop
(선택 사항) 내부 컴파일러 스택의 맨 위에서 레코드를 제거합니다. A pop
는 식별자 및 섹션 이름을 가질 수 있습니다. 식별자를 사용하여 하나의 pop
명령만 사용하여 여러 레코드를 팝업할 수 있습니다. 섹션 이름은 팝 뒤의 활성 const 섹션 이름이 됩니다.
identifier
(선택 사항) 사용할 push
경우 내부 컴파일러 스택의 레코드에 이름을 할당합니다. 이때 pop
지시문은 식별자가 제거될 때까지 내부 스택에서 레코드를 팝합니다. 내부 스택에서 식별자를 찾을 수 없으면 아무 것도 표시되지 않습니다.
"section-name"
(선택 사항) 섹션의 이름입니다. 함께 pop
사용하면 스택이 팝되고 섹션 이름이 활성 const 섹션 이름이 됩니다.
"section-class"
(선택 사항) 무시되지만 버전 2.0 이전의 Microsoft C++ 버전과의 호환성을 위해 포함됩니다.
설명
개체 파일의 섹션은 메모리에 단위로 로드되는 명명된 데이터 블록입니다. const 섹션은 상수 데이터를 포함하는 섹션입니다. 이 문서에서 용어 세그먼트 와 섹션 은 동일한 의미를 갖습니다.
지시문은 const_seg
pragma 변환 단위의 모든 상수 데이터 항목을 section-name이라는 const 섹션에 넣도록 컴파일러에 지시합니다. 변수에 대한 const
개체 파일의 기본 섹션은 .입니다 .rdata
. 스칼라 같은 일부 const
변수는 자동으로 코드 스트림으로 인라인 처리됩니다. 인라인 코드가 에 .rdata
표시되지 않습니다. const_seg
pragma section-name 매개 변수가 없는 지시문은 후속 const
데이터 항목.rdata
의 섹션 이름을 다시 설정합니다.
동적 초기화가 필요한 개체를 const_seg
정의하는 경우 결과는 정의되지 않은 동작입니다.
섹션을 만드는 데 사용할 수 없는 이름 목록은 다음을 참조하세요 /SECTION
.
초기화된 데이터(), 초기화되지 않은 데이터(data_seg
) 및 함수(bss_seg
)에 대한 섹션을 지정할 수도 있습니다code_seg
.
DUMPBIN.EXE 애플리케이션을 사용하여 개체 파일을 볼 수 있습니다. 지원되는 각 대상 아키텍처에 대한 DUMPBIN 버전은 Visual Studio에 포함됩니다.
예시
// pragma_directive_const_seg.cpp
// compile with: /EHsc
#include <iostream>
const int i = 7; // inlined, not stored in .rdata
const char sz1[]= "test1"; // stored in .rdata
#pragma const_seg(".my_data1")
const char sz2[]= "test2"; // stored in .my_data1
#pragma const_seg(push, stack1, ".my_data2")
const char sz3[]= "test3"; // stored in .my_data2
#pragma const_seg(pop, stack1) // pop stack1 from stack
const char sz4[]= "test4"; // stored in .my_data1
int main() {
using namespace std;
// const data must be referenced to be put in .obj
cout << sz1 << endl;
cout << sz2 << endl;
cout << sz3 << endl;
cout << sz4 << endl;
}
test1
test2
test3
test4