Compartilhar via


intrinsic

Especifica que chamadas para funções especificadas na lista de argumentos do pragma são intrínsecas.

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

Comentários

O intrínseca pragma informa ao compilador que uma função possui conhecidos de comportamento.O compilador pode chamar a função e substitui a chamada de função com instruções in-line, que resultará em um melhor desempenho.

As funções da biblioteca com formulários intrínsecas estão listadas abaixo.Uma vez um intrínseca pragma é visto, ele entrará em vigor com a primeira definição da função que contém uma função intrínseca especificada.O efeito continuará até o fim do arquivo de origem ou para a aparência de um função pragma especificando a mesma função intrínseca.O intrínseca pragma pode ser usado somente fora de uma definição de função — no nível global.

As seguintes funções têm formulários intrínsecos e os formulários intrínsecos são usados quando você especifica /Oi:

_disable

_outp

fabs

strcmp

_ ativar

_outpw

laboratórios

strcpy

_inp

_rotl

memcmp

strlen

_inpw

_rotr

memcpy

 

_lrotl

_strset

memset

 

_lrotr

ABS

strcat

 

Programas que usam funções intrínsecas são mais rápidos porque eles não possuem a sobrecarga de chamadas de função, mas podem ser maiores devido ao código adicional gerado.

x 86 específicos

Os _disable e _ ativar intrínsecos do geram instruções de modo kernel para habilitar/desabilitar interrupções e podem ser útil em drivers de modo kernel.

Exemplo

Compilar o código a seguir na linha de comando com "cl - c-FAs sample.c" e examine o sample.asm para ver o que eles se transformar em x86 instruções CLI e 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() {
}

End x86 específicos

As funções de ponto flutuante listadas abaixo não possuem formulários intrínsecos true.Em vez disso, eles têm versões passam argumentos diretamente para o chip de ponto flutuante em vez de empurrando-los na pilha do programa:

ACOS

COSH

pow

TANH

ASIN

fmod

SINH

 

As funções de ponto flutuante listadas abaixo possuem formulários intrínsecos true quando você especifica /Oi, /Og, e /fp:fast (ou qualquer opção que inclua /Og: /Ox, /O1e /O2.):

ATAN

EXP

LOG10

SQRT

ATAN2

log

sin

Tan

CoS

 

 

 

Você pode usar /fp: strict ou /Za para substituir a geração das opções de ponto flutuante intrínsecas true.Nesse caso, as funções são geradas como rotinas de biblioteca que passam argumentos diretamente para o chip de ponto flutuante em vez de empurrando-los na pilha do programa.

Consulte a função de # pragma para obter informações e um exemplo sobre como ativar/desativar intrínsecos para um bloco de texto de origem.

Consulte também

Referência

Diretivas pragma e __Pragma palavra-chave

Intrínsecos do compilador