Voglio disabilitare le eccezioni nella mia applicazione C++, compilato in MSVC. Ho attivato l'opzione Abilita eccezioni C++ su NO, ma ricevo avvertenze che mi dicono di usare l'opzione/Ehsc, che non desidero.Posso disabilitare le eccezioni in AWL?
Non ho try/catch blocchi nel mio codice, ma io uso STL. Ho scoperto che usando _HAS_EXCEPTIONS macro definizione = 0 dovrebbe disabilitare le eccezioni di cui STL, ma sto ancora ricevendo avvertimento come:
warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_typeid' see declaration of 'stdext::exception' see declaration of 'std::bad_typeid'
C'è un modo come spegnere le eccezioni è STL?
Nota: nel mio codice voglio anche disattivare le opzioni RTTI. Ricevo gli stessi avvertimenti, non importa se RTTI è acceso o spento.
Quello che non capisco è quando si utilizza/MD o/MDd perché è necessario il _STATIC_CPPLIB. Da quanto ho potuto leggere, il codice utilizza libcmt.lib e non msvcrtd.lib. L'intero punto di utilizzo di/MD è di avere librerie collegate dinamicamente e non librerie statiche collegate. L'aggiunta di _STATIC_CPPLIB sembra vanificare lo scopo dell'uso del flag/MD. – gnash117
_STATIC_CPPLIB è obsoleto in MSVC 2010 quindi utilizzarlo con MSVC 2010 sostituirà semplicemente un set di avvisi con un altro. – gnash117
gnash117, MSDN per MSVC2008 dice che quando si utilizza la definizione del preprocessore _STATIC_CPPLIB l'applicazione collega libcmt.lib invece di msvcprt.lib, ma continua a collegarsi dinamicamente al CRT principale tramite msvcrt.lib. – Rom098