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 functionpragma pour forcer explicitement un appel de fonction. Une fois qu’un functionpragma é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 intrinsicpragma fonction intrinsèque spécifiant la même fonction intrinsèque. Vous ne pouvez utiliser l’extérieur functionpragma 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 '!!!!!!!!!!!!!!!'

Voir aussi

Directives pragma et les __pragma_Pragma mot clé