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