noreturn
The latest version of this topic can be found at noreturn.
Microsoft Specific
This __declspec
attribute tells the compiler that a function does not return. As a consequence, the compiler knows that the code following a call to a __declspec(noreturn) function is unreachable.
If the compiler finds a function with a control path that does not return a value, it generates a warning (C4715) or error message (C2202). If the control path cannot be reached due to a function that never returns, you can use __declspec(noreturn) to prevent this warning or error.
Note
Adding __declspec(noreturn) to a function that is expected to return can result in undefined behavior.
Example
In the following sample,the else clause does not contain a return statement. Declaring fatal
as __declspec(noreturn) avoids an error or warning message.
// noreturn2.cpp
__declspec(noreturn) extern void fatal () {}
int main() {
if(1)
return 1;
else if(0)
return 0;
else
fatal();
}