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 전용 종료

참고 항목

__declspec
키워드