Next: Integer Properties, Previous: Compile-time Assertions, Up: Particular Modules [Contents][Index]
A "non-returning" function is a function which cannot return normally.
It can transfer control only through longjmp()
, throw
(in C++), or similar mechanisms. The most prominent function of this
class is the abort
function. Non-returning functions are
declared with a void
return type.
It helps the compiler’s ability to emit sensible warnings, following data-flow analysis, to declare which functions are non-returning.
To decorate function declarations and function definitions, you can
use the _Noreturn
keyword. No modules are needed, as Gnulib
arranges for <config.h>
to define _Noreturn
to an
appropriate replacement on platforms lacking it.
Gnulib has two modules that support such a declaration:
_GL_NORETURN_FUNC
for use in function declarations and function
definitions.
_GL_NORETURN_FUNCPTR
for use on function pointers.
The include file is <noreturn.h>
.
noreturn
instead of _Noreturn
;
unfortunately, noreturn
is a no-op on some platforms even
though _Noreturn
works on them. The include file is
<stdnoreturn.h>
.
Which of the two modules to use? If the non-returning functions you
have to declare are unlikely to be accessed through function pointers,
you should use module stdnoreturn
; otherwise the module
noreturn
provides for better data-flow analysis and thus for
better warnings.
For a detailed description of the stdnoreturn
module, see
stdnoreturn.h.
Next: Integer Properties, Previous: Compile-time Assertions, Up: Particular Modules [Contents][Index]