Freigeben über


function pragma

Weist den Compiler an, Aufrufe an Funktionen zu generieren, die in der pragmaArgumentliste angegeben sind, anstatt sie einzugliedern.

Syntax

#pragma function(funktion1 [ ,Funktion2 ... ] )

Hinweise

Systeminterne Funktionen werden normalerweise als Inlinecode generiert, nicht als Funktionsaufrufe. Wenn Sie die intrinsic pragma Compileroption verwenden, /Oi um den Compiler anweisen, systeminterne Funktionen zu generieren, können Sie den functionpragma Funktionsaufruf explizit erzwingen. Sobald eine functionpragma Anzeige erfolgt, wird sie bei der ersten Funktionsdefinition wirksam, die eine angegebene systeminterne Funktion enthält. Der Effekt wird bis zum Ende der Quelldatei oder zum Erscheinungsbild einer intrinsicpragma Angabe derselben systeminternen Funktion fortgesetzt. Sie können nur die functionpragma Außerhalb einer Funktion auf globaler Ebene verwenden.

Listen der Funktionen mit systeminternen Formularen finden Sie unter intrinsic pragma.

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, '!'));
}
str is 'Now************'
str is '!!!!!!!!!!!!!!!'

Siehe auch

Pragma-Direktiven und die __pragma und _Pragma Schlüsselwort (keyword)