You copied the Doc URL to your clipboard.


The __pure keyword asserts that a function declaration is pure.

A function is pure only if:

  • the result depends exclusively on the values of its arguments

  • the function has no side effects.

__pure is a function qualifier. It affects the type of a function.


This keyword has the function attribute equivalent __attribute__((const)).


By default, functions are assumed to be impure.


Pure functions are candidates for common subexpression elimination.


A function that is declared as pure can have no side effects. For example, pure functions:

  • cannot call impure functions

  • cannot use global variables or dereference pointers, because the compiler assumes that the function does not access memory, except stack memory

  • must return the same value each time when called twice with the same parameters.


int factr(int n) __pure
    int f = 1;
    while (n > 0)
        f *= n--;
    return f;}