Сегодня я читал о чистой функции, запутался в ее использовании:
Функция называется чистой, если она возвращает тот же набор значений для одного и того же набора входов и не имеет наблюдаемых побочных эффектов.
например. strlen()
- чистая функция, а rand()
- нечистая.
__attribute__ ((pure)) int fun(int i)
{
return i*i;
}
int main()
{
int i=10;
printf("%d",fun(i));//outputs 100
return 0;
}
Вышеприведенная программа ведет себя так же, как и при отсутствии объявления pure
.
В чем преимущества объявления функции как pure
[если нет изменения в выходе]?