Freigeben über


function (C/C++)

Gibt an, dass Funktionsaufrufe generiert werden, die in der Argumentliste des Pragmas angegeben sind.

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

Hinweise

Wenn Sie das intrinsic-Pragma (oder /Oi) verwenden, um den Compiler aufzufordern, systeminterne Funktionen zu generieren (systeminterne Funktionen werden als Inlinecode und nicht als Funktionsaufrufe generiert), können Sie das function-Pragma verwenden, um einen Funktionsaufruf explizit zu erzwingen. Sobald ein function-Pragma angezeigt wird, tritt es mit der ersten Funktionsdefinition in Kraft, die eine bestimmte systeminterne Funktion enthält. Die Wirkung dauert bis zum Ende der Quelldatei oder bis zum Auftreten eines intrinsic-Pragmas, das die gleiche systeminterne Funktion angibt. Das function-Pragma kann nur außerhalb einer Funktion auf globaler Ebene verwendet werden.

Listen der Funktionen mit systeminternen Formen finden Sie unter #pragma intrinsic.

Beispiel

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

Siehe auch

Referenz

Pragma-Direktiven und das __Pragma-Schlüsselwort