nothrow
(C++)
Microsoft 전용
__declspec
함수 선언에 사용할 수 있는 확장 특성입니다.
구문
return-type
__declspec(nothrow)
[call-convention] function-name ([argument-list])
설명
모든 새 코드는 .가 아닌 __declspec(nothrow)
연산자를 noexcept
사용하는 것이 좋습니다.
이 특성은 컴파일러에게 선언한 함수와 이 함수가 요청한 함수들이 예외를 throw하지 않도록 명령합니다. 그러나 지시문을 적용하지는 않습니다. 즉, 또는 모드(Visual Studio 2017 버전 15.5 이상)throw()
와 달리 std:c++17
noexcept
호출되지 않습니다std::terminate
.
이제 기본값인, 동기 예외 처리 모델을 이용하여 컴파일러는 해제할 수 있는 특정 개체의 수명 추적 메커니즘을 제거할 수 있으며, 코드 크기를 크게 줄일 수 있습니다. 다음 전처리기 지시문을 감안할 때 아래의 세 가지 함수 선언은 모드에서 /std:c++14
동일합니다.
#define WINAPI __declspec(nothrow) __stdcall
void WINAPI f1();
void __declspec(nothrow) __stdcall f2();
void __stdcall f3() throw();
모드 throw()
에서는 /std:c++17
함수에서 예외가 throw될 경우 호출되므로 사용하는 __declspec(nothrow)
std::terminate
다른 모드와 동일하지 않습니다.
선언은 void __stdcall f3() throw();
C++ 표준에 정의된 구문을 사용합니다. C++17 throw()
에서는 키워드(keyword) 더 이상 사용되지 않습니다.
Microsoft 전용 종료
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기