function
pragma
Indique au compilateur de générer des appels à des fonctions spécifiées dans la pragmaliste d’arguments du compilateur, au lieu de les inliner.
Syntaxe
#pragma function(
function1 [,
function2 ... ])
Notes
Les fonctions intrinsèques sont normalement générées en tant que code inline, et non en tant qu’appels de fonction. Si vous utilisez l’option intrinsic
pragma ou l’option du /Oi
compilateur pour indiquer au compilateur de générer des fonctions intrinsèques, vous pouvez utiliser l’option function
pragma pour forcer explicitement un appel de fonction. Une fois qu’un function
pragma élément est vu, il prend effet à la première définition de fonction qui contient une fonction intrinsèque spécifiée. L’effet continue à la fin du fichier source, ou à l’apparence d’une intrinsic
pragma fonction intrinsèque spécifiant la même fonction intrinsèque. Vous ne pouvez utiliser l’extérieur function
pragma d’une fonction qu’au niveau global.
Pour obtenir des listes des fonctions qui ont des formes intrinsèques, consultez intrinsic
pragma.
Exemple
// 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 '!!!!!!!!!!!!!!!'