throw(...)
-
Hallo zusammen
Ich habe eine Frage zu der Syntax throw(...).
In neueren Beispielen, die ich ausprobieren möchte, kommt es vor, dass in Klassen folgende Syntax verwendet wird:class myClass
{
void Init(_In_z_ LPCWSTR psz) throw(...)
{
}
};z.B. in atlconv.h von neueren MSVC.
Mein betagtes MSVC++ 6 kann diese Syntax nicht verarbeiten.
Wenn ich die ... weg lasse, geht es.
Was ist genau die Bedeutung dieser ...?
Danke
Reto
-
Dafür empfehle ich dir diesen Klassiker.
Vergiss am besten, dass du das Konstrukt gesehen hast. Niemand verwendet es, und der neue Standard bietet für die Fälle, wo es unter bestimmten Umständen bei bestimmten Compilern sinnvol ist, eine bessere Alternative (noexcept).
Auf alle Fälle solltest du aber die Finger vom MSVC6 lassen, der ist mehr als nur betagt. (In dem Fall war er wohl seiner Zeit voraus...)
-
Wie schon davie angedeutet hat: Lass die Finger von Ausnahme-Spezifikationen!
-
Wie schon geschrieben möchte ich fremden Code ausprobieren und dieser verwendet throw(...). Mein VC 6 kann das dann nicht übersetzten. Wie ich den 'Klassiker' verstanden habe, sollte man besser alle throw() hinter den Prototypen entfernen. Dann kann es auch VC 6 übersetzen.
Danke
Reto
-
Ja, solltest du. Gleichzeitig machst du den Code dann auch ein wenig zukunftssicherer, da die Exception-Spezifikationen im neuen Standard als deprecated markiert sind.
Aber die Frage der Fragen: Warum verwendest du MS VC++6? Gezwungenermaßen, hoffe ich mal!