Frage

Ich habe vor kurzem eine DLL, die von anderen umgesetzt wurde. Ich habe zu verwenden, es in meiner Anwendung. In der Header-Datei ihrer Klasse, die sie haben, die Funktionsdeklaration

void func1() throw (CCustomException);

Nun, wenn ich kompilieren ich erhalte die Warnung,

  

C ++ Ausnahmespezifikation ignoriert   mit Ausnahme einer Funktion, um anzuzeigen, ist nicht   _declspec (nothrow)

las ich die MSDN - Dokumentation konnte aber nicht eindeutig verstehen. Auch ich will nicht, um die Warnung deaktivieren, nur weil es zeigt nach oben. Ich will wissen, was ich falsch mache, statt sie zu deaktivieren.

dachte ich meine Funktion, sagen myfunc() dass func1() von der dll Zugriff nicht über diese Ausnahmespezifikationsliste. Daher habe ich versucht, auch als die entsprechende Ausnahmespezifikationsliste in meiner Funktion,

void myfunc1() throw (CCustomException);

Aber ich bin immer noch die Warnung. Was ist diese Warnung auf sich hat und wie man loswerden es erhalten? Ich bin mit Qt 4.5 in Windows XP.

War es hilfreich?

Lösung

Ok, ist es eine Nicht-Antwort, aber ich würde die Ausnahme Spezifikation wegzuwerfen und nie Gebrauch es wieder .

EDIT: ich zu schnell gelesen, und ich habe Sie nicht die Klasse nicht selbst geschrieben hat. Bester Weg, um Warnungen zu befreien in msvc über Pragma Warnung (Push), gefolgt von #pragma warning (disable: xxxx), wobei xxxx der Warncode:

#ifdef _MSC_VER 
#pragma warning(push)
#pragma warning(disable:xxxx)
#endif 

...

#ifdef _MSC_VER 
#pragma warning(pop)
#endif

EDIT: Es ist absolut sicher, um die Warnung zu deaktivieren. Ausnahme Spezifikationen sind böse, und die Compiler nur sagen Ihnen, es wird sie für Sie zu deaktivieren. Auch wenn es bricht den Standard.

Andere Tipps

Sie können mit Präprozessor versuchen zu spielen:

#ifdef _SOME_MSVC_DEFINE
#  define _throw(foo)
#else
#  define _throw(foo) throw(foo)
#endif

void myfunc1() _throw (CCustomException);

Oder versuchen Sie diese Warnung in Visual Studio zu deaktivieren.

Ich fand dieses Link , die ich nützlich gefunden. Gerade hinzugefügt, wenn es jemand nützlich sein könnte ..

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