| pure

Previous | Specifying Attributes of Functions | Next

Many functions have no effects except the return value and their return value depends only on the parameters and/or global variables. Such a function can be subject to common subexpression elimination and loop optimization just as an arithmetic operator would be. These functions should be declared with the attribute `pure`. For example,

    int square (int) __attribute__ ((pure));

says that the hypothetical function square is safe to call fewer times than the program says.
Some common examples of pure functions are strlen or memcmp. Interesting non-pure functions are functions with infinite loops or those depending on volatile memory or other system resource, that may change between two consecutive calls.

See also: const