Sdílet prostřednictvím


function pragma

Říká kompilátoru, aby místo vkládání vygeneroval volání funkcí zadaných v pragmaseznamu argumentů.

Syntaxe

#pragma function(funkce1 [ , funkce2 ... ])

Poznámky

Vnitřní funkce se obvykle generují jako vložený kód, ne jako volání funkce. Pokud k vygenerování vnitřních funkcí použijete intrinsic pragma možnost kompilátoru /Oi nebo kompilátoru, můžete použít functionpragma k explicitní vynucení volání funkce. functionpragma Jakmile se zobrazí, projeví se na první definici funkce, která obsahuje zadanou vnitřní funkci. Efekt pokračuje na konec zdrojového souboru nebo na vzhled intrinsicpragma určující stejnou vnitřní funkci. Na globální úrovni můžete použít functionpragma pouze mimo funkci.

Seznam funkcí, které mají vnitřní formuláře, naleznete v tématu intrinsic pragma.

Příklad

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

Viz také

Direktivy Pragma a __pragma _Pragma klíčová slova