Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Diz ao compilador para gerar chamadas para funções especificadas na lista de argumentos do pragma, em vez de inseri-las.
Sintaxe
#pragma function(função1 [,função2 ... ])
Comentários
As funções intrínsecas são normalmente geradas como código embutido, não como chamadas de função. Se você usar a opção intrinsic pragma ou o compilador /Oi para dizer ao compilador para gerar funções intrínsecas, você pode usar o functionpragma para forçar explicitamente uma chamada de função. Uma vez que um functionpragma é visto, ele entra em vigor na primeira definição de função que contém uma função intrínseca especificada. O efeito continua até o final do arquivo de origem, ou até a aparência de um intrinsicpragma especificando a mesma função intrínseca. Você só pode usar o functionpragma fora de uma função, em nível global.
Para obter listas das funções que têm formas intrínsecas, consulte intrinsic pragma.
Exemplo
// pragma_directive_function.cpp
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// use intrinsic forms of memset and strlen
#pragma intrinsic(memset, strlen)
// Find first word break in string, and set remaining
// chars in string to specified char value.
char *set_str_after_word(char *string, char ch) {
int i;
int len = strlen(string); /* NOTE: uses intrinsic for strlen */
for(i = 0; i < len; i++) {
if (isspace(*(string + i)))
break;
}
for(; i < len; i++)
*(string + i) = ch;
return string;
}
// do not use strlen intrinsic
#pragma function(strlen)
// Set all chars in string to specified char value.
char *set_str(char *string, char ch) {
// Uses intrinsic for memset, but calls strlen library function
return (char *) memset(string, ch, strlen(string));
}
int main() {
char *str = (char *) malloc(20 * sizeof(char));
strcpy_s(str, sizeof("Now is the time"), "Now is the time");
printf("str is '%s'\n", set_str_after_word(str, '*'));
printf("str is '%s'\n", set_str(str, '!'));
}
str is 'Now************'
str is '!!!!!!!!!!!!!!!'