funkce (C/C++)
Určuje, že volání funkcí zadaných v seznamu argumentů direktivy pragma budou vytvořena.
#pragma function( function1 [, function2, ...] )
Poznámky
Použitím direktivy pragma intrinsic (nebo /Oi) pro oznámení kompilátoru, aby vytvářel vnitřní funkce (vnitřní funkce jsou vytvořeny jako vložený kód, nikoli jako volání funkce) lze použít direktivu pragma function k vynucení explicitního volání funkce.Po nalezení direktivy pragma function se její účinek projeví v první definici funkce obsahující zadanou vnitřní funkci.Účinek trvá do konce zdrojového souboru nebo do výskytu direktivy pragma intrinsic zadávající stejnou vnitřní funkci.Direktivu pragma function lze použít pouze vně funkce na globální úrovni.
Funkce, které mají vlastní formu seznamů naleznete v tématu #pragma intrinsic.
Příklad
// 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, '!'));
}