function pragma

Derleyiciye, 'nin bağımsız değişken listesinde belirtilen işlevlere çağrılar oluşturmasını pragmasöyler.

Sözdizimi

#pragma function(işlev1 [ ,işlev2 ... ] )

Açıklamalar

İç işlevler normalde işlev çağrıları olarak değil satır içi kod olarak oluşturulur. Derleyiciye iç işlevler oluşturmasını söylemek için veya /Oi derleyici seçeneğini kullanırsanızintrinsic pragma, açıkça bir işlev çağrısı zorlamak için öğesini functionpragma kullanabilirsiniz. functionpragma bir görüldükten sonra, belirtilen bir iç işlevi içeren ilk işlev tanımında geçerlilik kazanır. Etki, kaynak dosyanın sonuna veya aynı iç işlevi belirten bir intrinsicpragma görünümüne devam eder. Yalnızca genel düzeyde bir işlevin dışını kullanabilirsiniz functionpragma .

İç formları olan işlevlerin listeleri için bkz intrinsic pragma. .

Örnek

// 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 '!!!!!!!!!!!!!!!'

Ayrıca bkz.

Pragma yönergeleri ve __pragma ve _Pragma anahtar sözcükleri