Lưu ý
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử thay đổi thư mục.
Microsoft Specific
The __declspec attribute tells the compiler that a function does not return. The compiler then 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, 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 example, when the argument for isZeroOrPositive is negative, fatal is called. There isn't a return statement in that control path, which results in warning C4715 that not all control paths return a value. Declaring fatal as __declspec(noreturn) mitigates that warning, which is desirable because there is no point in it since fatal() terminates the program.
// noreturn2.cpp
#include <exception>
__declspec(noreturn) void fatal()
{
std::terminate();
}
int isZeroOrPositive(int val)
{
if (val == 0)
{
return 0;
}
else if (val > 0)
{
return 1;
}
// this function terminates if val is negative
fatal();
}
int main()
{
isZeroOrPositive(123);
}
END Microsoft Specific