You copied the Doc URL to your clipboard.

__pure

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.

Note

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

Default

By default, functions are assumed to be impure.

Usage

Pure functions are candidates for common subexpression elimination.

Restrictions

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.

Examples

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