Udostępnij za pośrednictwem


funkcja (C/C++)

Określa, że wywołania funkcji określonej na liście argumentów dyrektywy są generowane.

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

Uwagi

Jeśli używana jest dyrektywa intrinsic (lub /Oi), aby nakazać kompilatorowi generowanie funkcji wewnętrznych (funkcje wewnętrzne są generowane jako kod wbudowany, nie jako wywołania funkcji), można użyć dyrektywy function, aby jawnie wymusić wywołanie funkcji.Kiedy dyrektywa function zostanie zauważona, ma wpływ na pierwszą definicję funkcji zawierającej określoną funkcję wewnętrzną.Dyrektywa wpływa na wszystkie funkcje do końca pliku z kodem źródłowym lub do pojawienia się dyrektywy intrinsic określającej tę samą funkcję wewnętrzną.Dyrektywa function może być używana tylko poza definicją funkcji — na poziomie globalnym.

Dla list funkcji, które zawierają formy wewnętrzne, zobacz #pragma intrinsic.

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, '!'));
}
  

Zobacz też

Informacje

Dyrektywy pragma i słowo kluczowe __Pragma