 |
noreturn |
A few standard library functions, such as abort and exit,
cannot return. Some programs define
their own functions that never return. You can declare them
noreturn
to tell the compiler this fact. For example:
void fatal () __attribute__ ((noreturn));
void
fatal (/* ... */)
{
/* ... */ /* Print error message. */ /* ... */
exit (1);
}
The noreturn
keyword tells the compiler to assume that
fatal cannot return. It can then optimize without regard to what
would happen if fatal ever did return. This makes slightly
better code. More importantly, it helps avoid spurious warnings of
uninitialized variables.
Do not assume that registers saved by the calling function are
restored before calling the noreturn
function.
It does not make sense for a noreturn
function to have a return
type other than void
.