Compartir a través de


intrinsic

Especifica que las llamadas a funciones especificadas en la lista de argumentos de pragma son intrínsecas.

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

Comentarios

La pragma de intrínseco indica al compilador que una función ha conocido comportamiento.El compilador puede llamar a la función y no reemplazar la llamada de función con instrucciones inline, si da lugar a un mejor rendimiento.

Las funciones de biblioteca con formularios intrínsecos se enumeran.Una vez que se considera un pragma de intrínseco , se aplica a la primera definición de función que contiene una función intrínseca especificada.El efecto continúa hasta el final del archivo de código fuente o el aspecto de un pragma de función que especifica la misma función intrínseca.La pragma de intrínseco sólo se puede utilizar fuera de una definición de función — en el nivel global.

Las siguientes funciones tienen formularios intrínsecos y se utilizan formularios intrínsecos cuando se especifica /Oi:

_disable

_outp

fabs

strcmp

_enable

_outpw

procedimientos

strcpy

_inp

_rotl

memcmp

strlen

_inpw

_rotr

memcpy

 

_lrotl

_strset

memset

 

_lrotr

abs

strcat

 

Los programas que utilizan funciones intrínsecas son más rápidas porque no tienen la sobrecarga de llamadas de función pero pueden ser más grande debido al código adicional generado.

Específico de x86

Intrínseco _disable y _enable generan instrucciones en modo kernel para deshabilitar o se interrumpe habilitadas y podrían ser útiles en controladores modo kernel.

Ejemplo

Compile el código de línea de comandos con “cl - c - FAs sample.c” y busque sample.asm para ver que giran en x86 instrucciones CLI y 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() {
}

Final x86 Específico

Las funciones de punto flotante enumeradas a continuación no tienen formularios intrínsecos auténticos.En su lugar tienen versiones que pasen argumentos directamente a chip flotante en lugar de insertandolos en la pila del programa:

acos

cosh

pow

tanh

asin

fmod

sinh

 

Las funciones de punto flotante enumeradas abajo tienen formularios intrínsecos auténticos cuando se especifica /Oi, /Og, y /fp: rápido (o cualquier opción que incluya /Og: /Ox, /O1, y /O2):

atan

exp

log10

sqrt

atan2

log

sin

tan

cos

 

 

 

Puede utilizar /fp: estricta o /Za para reemplazar la compilación de opciones flotantes intrínsecas true.En este caso, las funciones se generan como rutinas de biblioteca que pasan sus argumentos directamente al procesador de punto flotante en lugar de insertarlos en la pila del programa.

Vea # función de pragma para obtener información y un ejemplo sobre cómo habilitar/intrínseco deshabilitados de un bloque de texto original.

Vea también

Referencia

Directivas de pragma y la palabra clave de __Pragma

Función intrínseca del compilador