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:
|
|||
|
|||
|
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:
|
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):
|
|
|
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.