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 function
pragma para forzar explícitamente una llamada a una función. Una vez vista function
pragma, 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 intrinsic
pragma que especifique la misma función intrínseca. Solo puede usar function
pragma 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 '!!!!!!!!!!!!!!!'