Udostępnij za pośrednictwem


function pragma

Informuje kompilator o generowaniu wywołań funkcji określonych na pragmaliście argumentów zamiast ich tworzenia.

Składnia

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

Uwagi

Funkcje wewnętrzne są zwykle generowane jako kod wbudowany, a nie jako wywołania funkcji. Jeśli używasz intrinsic pragma opcji lub kompilatora /Oi , aby poinformować kompilator o generowaniu funkcji wewnętrznych, możesz użyć functionpragma polecenia , aby jawnie wymusić wywołanie funkcji. functionpragma Gdy element zostanie wyświetlony, ma zastosowanie w pierwszej definicji funkcji, która zawiera określoną funkcję wewnętrzną. Efekt jest kontynuowany na końcu pliku źródłowego lub do wyglądu intrinsicpragma określającej tę samą funkcję wewnętrzną. Można używać functionpragma tylko poza funkcją na poziomie globalnym.

Aby uzyskać listę funkcji, które mają formularze wewnętrzne, zobacz intrinsic pragma.

Przykład

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

Zobacz też

Pragmadyrektywy i __pragma słowa kluczowe i _Pragma