내장
pragma의 인수 목록에 지정된 함수에 대한 호출을 내장 함수로 지정합니다.
#pragma intrinsic( function1 [, function2, ...] )
설명
intrinsic pragma는 함수에 알려진 동작이 있음을 컴파일러에 알립니다. 컴파일러는 함수를 호출할 수 있으며 성능을 개선할 수 있는 경우 함수 호출을 인라인 명령으로 바꾸지 않을 수 있습니다.
아래에 내장 형식의 라이브러리 함수가 나와 있습니다. intrinsic pragma는 표시된 후 지정한 내장 함수를 포함하는 첫 번째 함수 정의에서 적용됩니다. 이 pragma는 동일한 내장 함수를 지정하는 function pragma가 표시되는 위치 또는 소스 파일의 끝까지 계속 적용됩니다. intrinsic pragma는 전역 수준에서 함수 정의 외부에만 사용할 수 있습니다.
다음 함수는 내장 형식이며, 내장 형식은 /Oi를 지정할 때 사용됩니다.
|
|||
|
|||
|
내장 함수를 사용하는 프로그램은 함수 호출의 오버헤드가 없기 때문에 빠르게 실행되지만 추가 코드가 생성되므로 프로그램이 커질 수 있습니다.
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 전용 종료
아래에 나와 있는 부동 소수점 함수는 실제 내장 형식을 포함하지 않습니다. 대신 인수를 프로그램 스택으로 푸시하지 않고 부동 소수점 칩으로 직접 전달하는 버전이 있습니다.
|
아래에 나와 있는 부동 소수점 함수는 /Oi, /Og 및 /fp:fast(또는 /Og: /Ox, /O1 및 /O2를 포함하는 모든 옵션)를 지정하는 경우 실제 내장 형식을 포함합니다.
|
|
|
/fp:strict 또는 /Za를 사용하여 실제 내장 부동 소수점 옵션 생성을 재정의할 수 있습니다. 이 경우에는 함수가 인수를 프로그램 스택으로 푸시하는 대신 부동 소수점 칩으로 직접 전달하는 라이브러리 루틴으로 생성됩니다.
소스 텍스트 블록에 대해 내장 함수를 활성화/비활성화하는 방법에 대한 자세한 내용과 예제는 # pragma 함수를 참조하십시오.