0
私は使用しているヘッダが/ EHaコンパイラスイッチでコンパイルされていることを確認する必要がありますか?実行中のMicrosoft C++コードが/ EHaスイッチでコンパイルされているかどうかを確認する方法はありますか?
どうすればいいですか?
私は使用しているヘッダが/ EHaコンパイラスイッチでコンパイルされていることを確認する必要がありますか?実行中のMicrosoft C++コードが/ EHaスイッチでコンパイルされているかどうかを確認する方法はありますか?
どうすればいいですか?
inline bool CodeHasEHaSwitch()
{
bool dtorCalled = false;
struct CCheckEHaSwitch
{
CCheckEHaSwitch(bool& dtorCalled) : dtorCalled(dtorCalled) {}
~CCheckEHaSwitch() { dtorCalled = true; }
bool& dtorCalled;
static void Win32ExceptionTranslator(unsigned int nExceptionCode,
EXCEPTION_POINTERS *pExceptionInfo)
{ throw nExceptionCode; }
};
_se_translator_function pfnPrevSeTranslator =
_set_se_translator(CCheckEHaSwitch::Win32ExceptionTranslator);
try
{
CCheckEHaSwitch test(dtorCalled);
*((int*)0) = 0; // generate access violation
}
catch (unsigned int)
{
}
_set_se_translator(pfnPrevSeTranslator);
return dtorCalled;
}
header - > library? – user4581301
ヘッダーのように、STLのようなヘッダーのみを単純に使用することによって使用できるスタンドアロンのクラスです。私は例外処理について仮定しています。私はこれらの前提を検証し、正しくコンパイルしていない場合にヘッダーを含むユーザーに警告したいと考えています。 – zumalifeguard
ああ!私はあなたを得る。私があなたの質問を読んでいるところでは、それを提供していないヘッダーを使っていました。 – user4581301