noreturn
Microsoft 전용
이 특성은 __declspec
함수가 반환하지 않는다는 것을 컴파일러에 알려줍니다. 그런 다음 컴파일러는 함수를 호출한 다음 코드에 연결할 수 없다는 것을 __declspec(noreturn)
알고 있습니다.
컴파일러가 값을 반환하지 않는 제어 경로를 가진 함수를 발견할 경우 경고(C4715) 또는 오류 메시지(C2202)가 생성됩니다. 반환되지 않는 함수로 인해 컨트롤 경로에 연결할 수 없는 경우 이 경고 또는 오류를 방지하는 데 사용합니다 __declspec(noreturn)
.
참고 항목
반환할 것으로 예상되는 함수에 추가 __declspec(noreturn)
하면 정의되지 않은 동작이 발생할 수 있습니다.
예시
다음 예제에서는 인수 isZeroOrPositive
가 음 fatal
수이면 호출됩니다. 해당 컨트롤 경로에는 반환 문이 없으므로 모든 컨트롤 경로가 값을 반환하지 않는다는 경고 C4715가 발생합니다. 로 __declspec(noreturn)
선언하면 fatal
해당 경고가 완화됩니다. 이 경고는 프로그램을 종료한 이후 fatal()
아무 소용이 없기 때문에 바람직합니다.
// 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);
}
Microsoft 전용 종료
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기