Frage

Ich mag Ausnahmen in meiner C ++ aplication deaktivieren, unter MSVC zusammengestellt. Ich hve die Option ++ Ausnahmen von NO aktiviert C eingeschaltet, aber ich erhalte Warnungen mich zu sagen, die Option / EHsc zu verwenden, die ich nicht wollen.


I try / catch-Blöcke nicht in meinem Code, aber ich verwende STL. Ich habe das mit Makrodefinition _HAS_EXCEPTIONS gefunden = 0 die Ausnahmen in STL deaktivieren sollte, aber ich bin immer noch immer Warnung wie:


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'


Gibt es eine Möglichkeit, wie die Ausnahmen ausschalten STL ist?

Hinweis: In meinem Code Ich mag die RTTI-Optionen auszuschalten, auch. Ich erhalte die gleichen Warnungen egal ob die RTTI ein- oder ausgeschaltet ist.

Keine korrekte Lösung

Andere Tipps

Microsoft STL unterstützt Ausnahme Deaktivierung.

Für MSVC STL definieren Makro _HAS_EXCEPTIONS = 0 deaktiviert Ausnahmen, falls Sie verknüpfen Sie Ihre Anwendung mit libcmt.lib / LIBCMTD.LIB (/ MT oder / MTd Compiler-Option).

Wenn Sie mit msvcrt.lib / MSVCRTD.lib (/ MD oder / MDd Compiler-Option) verknüpfen Sie benötigen ein weiteres Makro definieren - _STATIC_CPPLIB. In diesem Fall entweder die folgenden Zeilen, bevor Sie AWL-Code einschließlich:

#define _HAS_EXCEPTIONS 0
#define _STATIC_CPPLIB

oder die folgenden Compiler-Optionen hinzuzufügen:

-D_HAS_EXCEPTIONS=0 -D_STATIC_CPPLIB

Bitte beachten Sie, dass C ++ Ausnahmen in den Projekteinstellungen deaktivieren müssen.

Sie benötigen einen STL zu verwenden, die Ausnahme Deaktivierung unterstützt. Dies ist im Allgemeinen eine Kompilierung-Makro-Definition.

Wenn ich nicht irre, bietet STLPort dies mit _STLP_USE_EXCEPTIONS = 0 und _STLP_NO_EXCEPTIONS. Ich weiß nicht, wie die Programme mit diesen Einstellungen verhalten. ;)

Ich denke, es gibt einige versteckte Fahne ist auch in der MS STL.

Die EASTL kommen aus der Box mit Ausnahmen deaktiviert:

http: //www.open- std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html

Der Typ-ID ist mit der Laufzeit Typerkennung zu tun. Sie können RTTI versuchen wollen auch ausschalten.

Allerdings werden bestimmte Teile des C ++ Standard Library angegeben Ausnahmen zu werfen. Wenn Sie sie deaktivieren Sie segeln in den trüben Gewässern von „undefinierten Verhalten“.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top