Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Instruerar kompilatorn att generera anrop till funktioner som anges i pragmaargumentlista, i stället för att ange dem.
Syntax
#pragma function(function1 [,function2 ... ])
Anmärkningar
Inbyggda funktioner genereras normalt som infogad kod, inte som funktionsanrop. Om du använder alternativet intrinsic pragma eller /Oi kompilator för att instruera kompilatorn att generera inbyggda funktioner kan du använda functionpragma för att uttryckligen framtvinga ett funktionsanrop. När en functionpragma visas börjar den gälla vid den första funktionsdefinitionen som innehåller en angiven inbyggd funktion. Effekten fortsätter till slutet av källfilen, eller till utseendet på en intrinsicpragma som anger samma inbyggda funktion. Du kan bara använda functionpragma utanför en funktion på global nivå.
Listor över funktioner som har inbyggda formulär finns i intrinsic pragma.
Exempel
// 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 '!!!!!!!!!!!!!!!'