Delen via


function pragma

Geeft aan dat de compiler aanroepen naar functies moet genereren die zijn opgegeven in de lijst met argumenten van de pragma, in plaats van ze in een overzicht te plaatsen.

Syntaxis

#pragma function( functie1 [ ,functie2 ... ] )

Opmerkingen

Intrinsieke functies worden normaal gesproken gegenereerd als inlinecode, niet als functie-aanroepen. Als u de intrinsic pragma of de /Oi compileroptie gebruikt om de compiler intrinsieke functies te laten genereren, kunt u de functionpragma gebruiken om expliciet een functie-aanroep af te dwingen. Zodra een functionpragma wordt gezien, wordt deze van kracht bij de eerste functiedefinitie die een opgegeven intrinsieke functie bevat. Het effect blijft het einde van het bronbestand of het uiterlijk van een intrinsicpragma die dezelfde intrinsieke functie aangeeft. U kunt alleen de functionpragma buiten een functie op globaal niveau gebruiken.

Zie intrinsic pragmavoor lijsten met functies met intrinsieke vormen.

Voorbeeld

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

Zie ook

Pragma-instructies en de __pragma en _Pragma trefwoorden