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;