 |
pure |
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