Share via


intrinsic pragma

's 인수 목록에 지정된 함수에 pragma대한 호출이 내장 함수임을 지정합니다.

구문

#pragma intrinsic( function_1 [,function_2 ... ])

설명

함수 intrinsicpragma 에 알려진 동작이 있음을 컴파일러에 알릴 수 있습니다. 컴파일러는 함수를 호출할 수 있으며 성능을 개선할 수 있는 경우 함수 호출을 인라인 명령으로 바꾸지 않을 수 있습니다.

아래에 내장 형식의 라이브러리 함수가 나와 있습니다. intrinsicpragma 이 함수는 지정된 내장 함수를 포함하는 첫 번째 함수 정의에서 적용됩니다. 효과는 소스 파일의 끝이나 동일한 내장 함수를 functionpragma 지정하는 모양까지 계속됩니다. 전역 intrinsicpragma 수준에서 함수 정의 외부에서만 사용할 수 있습니다.

다음 함수는 내장 형식을 가지며, 다음을 지정할 /Oi때 기본 형식이 사용됩니다.

내장 함수를 사용하는 프로그램은 함수 호출의 오버헤드가 없기 때문에 더 빠릅니다. 그러나 생성된 추가 코드로 인해 더 클 수 있습니다.

x86 관련 예제

내장 함수는 _disable_enable 커널 모드 명령을 생성하여 인터럽트를 사용하지 않도록 설정하거나 사용하도록 설정하며 커널 모드 드라이버에서 유용할 수 있습니다.

명령줄 cl -c -FAs sample.c 에서 다음 코드를 컴파일하고 x86 명령 CLI 및 STI로 변환되는지 확인 sample.asm 합니다.

// pragma_directive_intrinsic.cpp
// processor: x86
#include <dos.h>   // definitions for _disable, _enable
#pragma intrinsic(_disable)
#pragma intrinsic(_enable)
void f1(void) {
   _disable();
   // do some work here that should not be interrupted
   _enable();
}
int main() {
}

내장 부동 소수점 함수

이러한 부동 소수점 함수에는 실제 내장 형식이 없습니다. 대신 인수를 스택에 푸시하는 대신 부동 소수점 칩에 직접 전달하는 버전이 있습니다.

이러한 부동 소수점 함수는 지정 /Oi 하는 /fp:fast 경우 및 (또는 다음/Ox/O2/O1을 포함하는 /Oi모든 옵션) 진정한 내장 형식을 갖습니다.

true 내장 부동 소수점 옵션의 생성을 사용 /fp:strict 하거나 /Za 재정의할 수 있습니다. 이 경우에는 함수가 인수를 프로그램 스택으로 푸시하는 대신 부동 소수점 칩으로 직접 전달하는 라이브러리 루틴으로 생성됩니다.

원본 텍스트 블록에 대해 내장 함수를 사용하거나 사용하지 않도록 설정하는 방법에 대한 정보 및 예제를 참조 #pragma function 하세요.

참고 항목

Pragma 지시문 및 __pragma_Pragma 키워드(keyword)
컴파일러 내장 함수