function pragma

Indica al compilatore di generare chiamate alle funzioni specificate nell'elenco pragmadi argomenti, anziché inlining.

Sintassi

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

Osservazioni:

Le funzioni intrinseche vengono in genere generate come codice inline, non come chiamate di funzione. Se si usa l'opzione intrinsic pragma del compilatore o /Oi per indicare al compilatore di generare funzioni intrinseche, è possibile usare per functionpragma forzare in modo esplicito una chiamata di funzione. functionpragma Una volta visualizzato, viene applicato alla prima definizione di funzione che contiene una funzione intrinseca specificata. L'effetto continua fino alla fine del file di origine o all'aspetto di un oggetto intrinsicpragma che specifica la stessa funzione intrinseca. È possibile usare l'esterno functionpragma di una funzione solo a livello globale.

Per gli elenchi delle funzioni con forme intrinseche, vedere intrinsic pragma.

Esempio

// 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 '!!!!!!!!!!!!!!!'

Vedi anche

Direttive Pragma e parole __pragma chiave e _Pragma