Сегодня я читал о чистой функции и запутался в ее использовании:
Функция называется чистой, если она возвращает один и тот же набор значений для одного и того же набора входных данных и не имеет никаких наблюдаемых побочных эффектов. .
напр. 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
.
Каковы преимущества объявления функции как чистой
[если нет изменений в выходе]?