Dela via


function pragma

Instruerar kompilatorn att generera anrop till funktioner som anges i pragmaargumentlista, i stället för att ange dem.

Syntax

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

Anmärkningar

Inbyggda funktioner genereras normalt som infogad kod, inte som funktionsanrop. Om du använder alternativet intrinsic pragma eller /Oi kompilator för att instruera kompilatorn att generera inbyggda funktioner kan du använda functionpragma för att uttryckligen framtvinga ett funktionsanrop. När en functionpragma visas börjar den gälla vid den första funktionsdefinitionen som innehåller en angiven inbyggd funktion. Effekten fortsätter till slutet av källfilen, eller till utseendet på en intrinsicpragma som anger samma inbyggda funktion. Du kan bara använda functionpragma utanför en funktion på global nivå.

Listor över funktioner som har inbyggda formulär finns i intrinsic pragma.

Exempel

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

Se även

Pragma-direktiv och nyckelorden __pragma och _Pragma