Dzisiaj czytałem o czystej funkcji, pomyliłem się z jej użyciem:
O funkcji mówi się, że jest czysta, jeśli zwraca ten sam zestaw wartości dla tego samego zestawu danych wejściowych i nie ma żadnych obserwowalnych skutków ubocznych.
np. strlen()
jest czystą funkcją, podczas gdy rand()
jest nieczysta.
__attribute__ ((pure)) int fun(int i)
{
return i*i;
}
int main()
{
int i=10;
printf("%d",fun(i));//outputs 100
return 0;
}
Powyższy program zachowuje się analogicznie jak w przypadku braku pure
deklaracji.
Jakie są korzyści z zadeklarowania funkcji jako pure
[jeśli nie ma zmiany w wyniku]?