alloc_text

Visual Studio 2012

지정한 함수 정의 있는 위치는 코드 섹션의 이름을 지정 합니다. Pragma는 함수 정의 명명 된 함수에는 함수 선언 자 사이의 발생 해야 합니다.

#pragma alloc_text( "textsection", function1, ... )

해당 alloc_text C++ 멤버 함수 또는 오버 로드 된 함수 pragma를 처리 하지 않습니다. C 링크로 선언 된 함수에만 적용할 수 있습니다-즉, 함수 선언에 extern "C" 연결 사양입니다. 이 pragma + + 링크를 사용 하는 함수를 사용 하려고 하면 컴파일러 오류가 생성 됩니다.

함수 주소 지정을 사용 하 여 이후 __based , 위치 섹션을 사용 해야 지정은 지원 되지 않습니다의 alloc_text pragma입니다. 지정 된 이름 textsection 큰따옴표로 묶어야 합니다.

해당 alloc_text pragma 표시 후에 지정 된 함수 및 이러한 함수를 정의 하기 전에 선언 해야 합니다.

함수에서 참조 되는 alloc_text pragma pragma와 동일한 모듈에 정의 되어야 합니다. 그렇지 않은 한 정의 되지 않은 함수를 나중에 다른 텍스트 섹션으로 컴파일될 경우 오류가 있습니다 또는 catch 할 수 있습니다. 일반적으로 프로그램이 올바르게 실행 되지만 함수는 의도 된 섹션에서 할당 됩니다.

다른 제한 사항 alloc_text 는 다음과 같습니다.

  • 함수 안에서 사용할 수 없습니다.

  • 함수를 선언 하지만 함수를 정의 하기 전에 사용 해야 합니다.


auto_inline

Visual Studio 2012

범위 내에서 정의 된 모든 함수를 제외 위치 오프 자동 인라인 확장으로 간주 하 고 지정 된.

#pragma auto_inline( [{on | off}] )

사용 하는 auto_inline pragma를 전과 후 즉시 배치 (에서) 함수 정의 합니다. Pragma는 pragma를 표시 한 후 첫 번째 함수 정의에 적용이 됩니다.


bss_seg

Visual Studio 2012

세그먼트 초기화 되지 않은 변수는.obj 파일에 저장 되는 위치를 지정 합니다.

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

Obj 파일을 볼 수 있습니다 해당 dumpbin 응용 프로그램입니다. 기본 세그먼트 초기화 되지 않은 데이터에 대 한.obj 파일에.bss입니다. 경우에 따라 사용의 bss_seg 속도 높일 수 있습니다 섹션에 초기화 되지 않은 데이터를 그룹화 하 여 로드 시간.

bss_seg 매개 변수 없이 세그먼트에.bss 다시 설정 합니다.

밀어넣기(옵션)

레코드를 내부 컴파일러 스택에 배치 됩니다. A 밀어넣기 가질 수 있는 식별자세그먼트 이름을.

pop (옵션)

내부 컴파일러 스택 위쪽에서 레코드를 제거합니다.

식별자 (옵션)

함께 사용 하는 경우 밀어넣기, 내부 컴파일러 스택 레코드에 이름을 할당 합니다. 사용 하는 경우 pop, 레코드까지 내부 스택에서 팝 식별자 제거 됩니다. 경우 식별자 찾을 수 없는 내부 스택에 아무것도 팝입니다.

식별자 은 팝 하려면 여러 레코드 수 있습니다 pop 명령을.

"세그먼트 이름"(옵션)

세그먼트 이름을. 함께 사용 하면 pop, 스택에서 팝 되 고 세그먼트 이름 을 현재 세그먼트 이름이 됩니다.

"세그먼트 클래스" (옵션)

버전 2.0 이전에 C++와의 호환성을 위해 포함 됩니다. 이 무시 됩니다.

// pragma_directive_bss_seg.cpp
int i;                     // stored in .bss
#pragma bss_seg(".my_data1")
int j;                     // stored in "my_data1"

#pragma bss_seg(push, stack1, ".my_data2")   
int l;                     // stored in "my_data2"

#pragma bss_seg(pop, stack1)   // pop stack1 from stack
int m;                     // stored in "stack_data1"

int main() {
}

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

사용 하 여 할당 된 데이터는 bss_seg pragma의 위치에 대 한 정보를 유지 하지 않습니다.

참조 하십시오 /SECTION 없습니다 사용 해야 섹션을 만들 때 이름 목록을 합니다.




check_stack

Visual Studio 2012

스택 검색 기능을 설정 하도록 컴파일러에 지시 오프 (또는 -) 지정 된 또는 스택 프로브를 설정 하려면 에서 (또는 +) 지정 됩니다.

#pragma check_stack([ {on | off}] )
#pragma check_stack{+ | –}

인수를 지정 하지 않으면 기본값에 따라 스택 조사 처리 됩니다. 이 pragma pragma를 본 후에 정의 된 첫 번째 함수에 적용 됩니다. 스택 조사 다 일부 매크로 생성 된 인라인 함수입니다.

인수를 지정 하지 않는 경우 해당 check_stack pragma를 명령줄에 지정 된 동작을 스택 검사로 돌아갑니다. 자세한 내용은 컴파일러 참조. 상호 작용을는 # pragma check_stack/Gs 옵션은 다음 표에 요약 되어 있습니다.

Check_stack Pragma를 사용 하 여

구문

컴파일됩니다.

/Gs 옵션?

동작

# pragma check_stack () 또는

#pragma check_stack

스택 검사를 수행 하는 함수를 해제 하는

# pragma check_stack () 또는

#pragma check_stack

아니요

스택 검사를 수행 하는 함수를 설정

# pragma check_stack(on)

또는 # pragma check_stack +

예 또는 아니요

스택 검사를 수행 하는 함수를 설정

# pragma check_stack(off)

또는 # pragma check_stack –

예 또는 아니요

스택 검사를 수행 하는 함수를 해제 하는



code_seg

Visual Studio 2012

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

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

약관의 의미 세그먼트섹션 이 항목의 상호 교환이 가능 합니다.

OBJ 파일을 볼 수 있습니다 해당 dumpbin 응용 프로그램입니다. 함수에 대 한.obj 파일에서 기본 세그먼트.text입니다.

code_seg 매개 변수 없이 세그먼트.text을 다시 설정 합니다.

밀어넣기(옵션)

레코드를 내부 컴파일러 스택에 배치 됩니다. A 밀어넣기 가질 수 있는 식별자세그먼트 이름을.

pop (옵션)

내부 컴파일러 스택 위쪽에서 레코드를 제거합니다.

식별자 (옵션)

함께 사용 하는 경우 밀어넣기, 내부 컴파일러 스택 레코드에 이름을 할당 합니다. 사용 하는 경우 pop, 레코드까지 내부 스택에서 팝 식별자 제거 됩니다. 경우 식별자 찾을 수 없는 내부 스택에 아무것도 팝입니다.

식별자 은 팝 하려면 여러 레코드 수 있습니다 pop 명령을.

"세그먼트 이름"(옵션)

세그먼트 이름을. 함께 사용 하면 pop, 스택에서 팝 되 고 세그먼트 이름 을 현재 세그먼트 이름이 됩니다.

"세그먼트 클래스" (옵션)

버전 2.0 이전에 C++와의 호환성을 위해 포함 됩니다. 이 무시 됩니다.

// 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 변수 (const_seg).


'프로그래밍 > 프로그래밍 공부' 카테고리의 다른 글

빈 기본 클래스 최적화 EBCO(Empty Base Class Optimization)  (0) 2015.03.25
오버로딩(Overloading)  (0) 2015.03.24
pragma 지시자  (0) 2015.03.19
아스키(ASCII) 코드표  (0) 2015.03.09
17장 파일 입출력  (0) 2015.03.08
11장 배열과 포인터  (0) 2015.03.02
Posted by GENESIS8

댓글을 달아 주세요