Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Указывает, что вызовы функций, указанных в списке pragmaаргументов, являются встроенными.
Синтаксис
#pragma intrinsic(function_1 [,function_2 ... ])
Замечания
Компилятор intrinsicpragma сообщает компилятору, что функция имеет известное поведение. Компилятор может вызвать функцию и не заменять вызов функции подставляемыми инструкциями, если это позволит повысить производительность.
Ниже перечислены функции библиотеки со встроенными формами.
intrinsic
pragma После того как он будет замечен, он вступает в силу при первом определении функции, содержащей указанную встроенную функцию. Эффект продолжается до конца исходного файла или к внешнему виду functionpragma указанной встроенной функции. Его intrinsicpragma можно использовать только за пределами определения функции на глобальном уровне.
Следующие функции имеют встроенные формы, а встроенные формы используются при указании /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() {
}
Встроенные функции с плавающей запятой
Эти функции с плавающей запятой не имеют истинных встроенных форм. Вместо этого они имеют версии, которые передают аргументы непосредственно в микросхему с плавающей запятой, а не помещают их в стек:
Эти функции с плавающей запятой имеют истинные встроенные формы при указании /Oi и /fp:fast (или любом параметре, который включает в себя /Oi: /Ox, /O1и /O2):
Можно использовать /fp:strict или /Za переопределить создание истинных встроенных параметров с плавающей запятой. В этом случае функции будут создаваться как библиотечные процедуры, которые передают аргументы напрямую в микросхему операций с плавающей запятой, а не в стек программы.
См #pragma function . сведения и пример включения и отключения встроенных функций для блока исходного текста.
См. также
директивы Pragma и ключевые слова __pragma и _Pragma
Встроенные компоненты компилятора