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