2017-07-29 5 views
0

私は使用しているヘッダが/ EHaコンパイラスイッチでコンパイルされていることを確認する必要がありますか?実行中のMicrosoft C++コードが/ EHaスイッチでコンパイルされているかどうかを確認する方法はありますか?

どうすればいいですか?

+0

header - > library? – user4581301

+0

ヘッダーのように、STLのようなヘッダーのみを単純に使用することによって使用できるスタンドアロンのクラスです。私は例外処理について仮定しています。私はこれらの前提を検証し、正しくコンパイルしていない場合にヘッダーを含むユーザーに警告したいと考えています。 – zumalifeguard

+0

ああ!私はあなたを得る。私があなたの質問を読んでいるところでは、それを提供していないヘッダーを使っていました。 – user4581301

答えて

0
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; 
} 
関連する問題