function
pragma
Informuje kompilator o generowaniu wywołań funkcji określonych na pragmaliście argumentów zamiast ich tworzenia.
Składnia
#pragma function(
function1 [,
function2 ... ])
Uwagi
Funkcje wewnętrzne są zwykle generowane jako kod wbudowany, a nie jako wywołania funkcji. Jeśli używasz intrinsic
pragma opcji lub kompilatora /Oi
, aby poinformować kompilator o generowaniu funkcji wewnętrznych, możesz użyć function
pragma polecenia , aby jawnie wymusić wywołanie funkcji. function
pragma Gdy element zostanie wyświetlony, ma zastosowanie w pierwszej definicji funkcji, która zawiera określoną funkcję wewnętrzną. Efekt jest kontynuowany na końcu pliku źródłowego lub do wyglądu intrinsic
pragma określającej tę samą funkcję wewnętrzną. Można używać function
pragma tylko poza funkcją na poziomie globalnym.
Aby uzyskać listę funkcji, które mają formularze wewnętrzne, zobacz intrinsic
pragma.
Przykład
// 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 '!!!!!!!!!!!!!!!'