Bagikan melalui


function pragma

Memberi tahu pengkompilasi untuk menghasilkan panggilan ke fungsi yang ditentukan dalam pragmadaftar argumen , alih-alih menginliningnya.

Sintaks

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

Keterangan

Fungsi intrinsik biasanya dihasilkan sebagai kode sebaris, bukan sebagai panggilan fungsi. Jika Anda menggunakan intrinsic pragma opsi atau /Oi pengkompilasi untuk memberi tahu pengkompilasi untuk menghasilkan fungsi intrinsik, Anda dapat menggunakan functionpragma untuk memaksa panggilan fungsi secara eksplisit. functionpragma Setelah terlihat, itu berlaku pada definisi fungsi pertama yang berisi fungsi intrinsik tertentu. Efek berlanjut ke akhir file sumber, atau ke tampilan yang intrinsicpragma menentukan fungsi intrinsik yang sama. Anda hanya dapat menggunakan bagian functionpragma luar fungsi, di tingkat global.

Untuk daftar fungsi yang memiliki bentuk intrinsik, lihat intrinsic pragma.

Contoh

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

Lihat juga

Arahan Pragma dan __pragma _Pragma kata kunci