Heute habe ich über reine Funktion gelesen und war verwirrt mit ihrer Verwendung:
Eine Funktion gilt als rein, wenn sie denselben Wertesatz für denselben Eingangssatz zurückgibt und keine beobachtbaren Nebenwirkungen aufweist.
zB strlen()
ist eine reine Funktion, während rand()
es eine unreine ist.
__attribute__ ((pure)) int fun(int i)
{
return i*i;
}
int main()
{
int i=10;
printf("%d",fun(i));//outputs 100
return 0;
}
Das obige Programm verhält sich genauso wie ohne pure
Deklaration.
Was sind die Vorteile der Deklaration einer Funktion als pure
[wenn sich die Ausgabe nicht ändert]?
printf
zum Beispiel würde sie sich qualifizieren (zweimal mit denselben Argumenten aufzurufen, ergibt denselben Rückgabewert), aber sie ist nicht rein.
...and no side-effects...
Teil.