Compartir por


function pragma

Indica al compilador que genere llamadas a funciones especificadas en la lista de argumentos de pragma, en lugar de insertarlas.

Sintaxis

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

Comentarios

Normalmente, las funciones intrínsecas se generan como código insertado, no como llamadas de función. Si utiliza la opción del compilador intrinsic pragma o /Oi para indicar al compilador que genere funciones intrínsecas, puede utilizar functionpragma para forzar explícitamente una llamada a una función. Una vez vista functionpragma, se aplica a la primera definición de función que contenga una función intrínseca especificada. El efecto continúa hasta el final del archivo de código fuente o hasta la aparición de intrinsicpragma que especifique la misma función intrínseca. Solo puede usar functionpragma fuera de una función, en el nivel global.

Para ver listas de funciones que tienen formas intrínsecas, vea intrinsic pragma.

Ejemplo

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

Vea también

Pragmadirectivas y las __pragma palabras clave y _Pragma