共用方式為


function (C/C++)

指定產生的 pragma 引數清單中所指定的函式呼叫。

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

備註

如果您使用內建 pragma (或 /Oi) 告訴編譯器產生內建的函式 (內建函式會產生為內嵌的程式碼中,不是以函式呼叫),您可以使用 函式 pragma,以明確地強制執行函式呼叫。 在函式 pragma 看之後,就會在第一個包含指定的內建函式的函式定義會生效。 原始程式檔的結尾或外觀的效果會繼續內建 pragma 指定相同的內建函式。 函式函式之外的只用於 pragma — 在全域層級。

內建形式的函式清單中,請參閱內建的 # pragma

範例

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

請參閱

參考

Pragma 指示詞 」 和 「 __Pragma 關鍵字