No-return functions
A function call can end either by using the return
keyword or by reaching the end of the function's block. There are also situations in which a function call never ends, and this is usually done intentionally. Look at the following code example contained in Code Box 12-4:
void main_loop() { while (1) { ... } } int main(int argc, char** argv) { ... main_loop(); return 0; }
Code Box 12-4: Example of a function that never returns
As you can see, the function main_loop
performs the main task of the program, and if we return from the function, the program could be considered as finished. In these exceptional cases, the compiler can perform some more optimizations, but somehow, it needs to know that the function main_loop
never returns.
In C11, you have the ability to mark a function as a no-return function. The _Noreturn
keyword from the stdnoreturn.h
header file can be used to specify that a function never exits. So, the code in...