function pragma

인라인 처리하지 않고 's 인수 목록에 지정된 함수에 pragma대한 호출을 생성하도록 컴파일러에 지시합니다.

구문

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

설명

내장 함수는 일반적으로 함수 호출이 아니라 인라인 코드로 생성됩니다. 컴파일러 옵션을 /Oi 사용하여 intrinsic pragma 컴파일러에 내장 함수를 생성하도록 지시하는 경우 이 옵션을 사용하여 functionpragma 함수 호출을 명시적으로 강제 적용할 수 있습니다. A가 functionpragma 표시되면 지정된 내장 함수를 포함하는 첫 번째 함수 정의에서 적용됩니다. 효과는 소스 파일의 끝이나 동일한 내장 함수를 intrinsicpragma 지정하는 모양까지 계속됩니다. 전역 수준에서 함수 외부만 사용할 functionpragma 수 있습니다.

내장 양식이 있는 함수 목록은 다음을 참조하세요 intrinsic 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, '!'));
}
str is 'Now************'
str is '!!!!!!!!!!!!!!!'

참고 항목

Pragma 지시문 및 __pragma_Pragma 키워드(keyword)