15.1.2.5 const
Many functions do not examine any values except their arguments, and
have no effects except the return value. 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 const
. For
example:
int square (int) __attribute__ ((const int));
says that the hypothetical function square
is safe to
call fewer times than the program states.
Note that a function that has pointer arguments and examines the data
pointed to must not be declared const
. Likewise, a function that
calls a non-const
function usually must not be const
.
It does not make sense for a const
function to have a
void
return type.