개체 참조를 반환하는 일부 멤버 함수에 __declspec(nothrow)
을 적용하고 싶습니다. 예를 들어, 나는 (에서 MyClass.h에서)이 기능에 추가하고 싶습니다 :참조를 반환하는 함수에서 __declspec (nothrow) 사용
CMyClass& operator= (IN UInt32 nValue)
{
return (SetValue (nValue));
};
내가 지금과 같은 함수의 반환 입력 한 후 추가해야 할 VC++ documentation says :
return-type __declspec(nothrow) [call-convention] function-name ([argument-list])
을
이렇게하면 대부분 내 기능이 __declspec(nothrow)
과 잘 작동합니다. 내가 그 위의 멤버 함수 (또는 CMyClass&
를 돌려 어떤 다른 사람)을 위해 할 때, 내가 컴파일 오류를 얻을 :
error C2059: syntax error : '__declspec(nothrow)'
내가 반환 형식 앞에 넣을 수 있으며, 그 다음 컴파일하지만, 설명서에서는 __declspec()이 잘못된 위치에 있으면 컴파일러가 경고 또는 오류없이 무시할 수 있다고 말합니다.
__declspec(nothrow)
을 사용하는 올바른 방법은 무엇입니까?
표준 준수의 'throw()'표시를 사용하지 않는 이유는 무엇입니까? –
이것은 꽤 의미없는 운동입니다. MSVC 컴파일러는 * nothrow * 선언을 허용하지만 선언을 bs로 처리하는 실제 컴파일러 구현 그룹의 일부입니다. C++ 11에서 더 많은 크레딧을 받았지만 예외 사양은 더 이상 사용되지 않습니다. 새 키워드는 * noexcept *입니다. 귀찮게하지 마라. –
글쎄, __declspec (nothrow)하는 동안 던져()도 noexcept VC++에서 작동하지 않습니다. – xxbbcc