Share via


내장

pragma의 인수 목록에 지정된 함수에 대한 호출을 내장 함수로 지정합니다.

#pragma intrinsic( function1 [, function2, ...] )

설명

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

아래에 내장 형식의 라이브러리 함수가 나와 있습니다. intrinsic pragma는 표시된 후 지정한 내장 함수를 포함하는 첫 번째 함수 정의에서 적용됩니다. 이 pragma는 동일한 내장 함수를 지정하는 function pragma가 표시되는 위치 또는 소스 파일의 끝까지 계속 적용됩니다. intrinsic pragma는 전역 수준에서 함수 정의 외부에만 사용할 수 있습니다.

다음 함수는 내장 형식이며, 내장 형식은 /Oi를 지정할 때 사용됩니다.

_disable

_outp

fabs

strcmp

_enable

_outpw

labs

strcpy

_inp

_rotl

memcmp

strlen

_inpw

_rotr

memcpy

 

_lrotl

_strset

memset

 

_lrotr

abs

strcat

 

내장 함수를 사용하는 프로그램은 함수 호출의 오버헤드가 없기 때문에 빠르게 실행되지만 추가 코드가 생성되므로 프로그램이 커질 수 있습니다.

x86 전용

_disable 및 _enable 내장 함수는 인터럽트를 비활성화/활성화하기 위한 커널 모드 명령을 생성하며 커널 모드 드라이버에서 유용할 수 있습니다.

예제

"cl -c -FAs sample.c"를 사용하여 다음 코드를 명령줄에서 컴파일한 다음 sample.asm을 찾아 이러한 내장 함수가 x86 명령 CLI 및 STI로 바뀌었는지 확인하십시오.

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

x86 전용 종료

아래에 나와 있는 부동 소수점 함수는 실제 내장 형식을 포함하지 않습니다. 대신 인수를 프로그램 스택으로 푸시하지 않고 부동 소수점 칩으로 직접 전달하는 버전이 있습니다.

acos

cosh

pow

tanh

asin

fmod

sinh

 

아래에 나와 있는 부동 소수점 함수는 /Oi, /Og/fp:fast(또는 /Og: /Ox, /O1 및 /O2를 포함하는 모든 옵션)를 지정하는 경우 실제 내장 형식을 포함합니다.

atan

exp

log10

sqrt

atan2

log

sin

tan

cos

 

 

 

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

소스 텍스트 블록에 대해 내장 함수를 활성화/비활성화하는 방법에 대한 자세한 내용과 예제는 # pragma 함수를 참조하십시오.

참고 항목

참조

Pragma 지시문 및 __Pragma 키워드

컴파일러 내장 함수