Freigeben über


Verwenden setjmp/longjmp

Verwenden Sie keine setjmp und longjmp in C++-Programmen. Diese Funktionen unterstützen keine Semantik C++-Objekt.Auch die Verwendung dieser Funktionen beeinträchtigt möglicherweise die Leistung in C++ Programme, indem sie die Optimierung auf lokalen Variablen verhindern.Verwenden Sie die C++-Ausnahmebehandlung stattdessen die try/catch Konstrukte behandelt.

Wenn Sie setjmp/longjmp verwenden, müssen in einem C++-Programm, erfordert die Interaktion zwischen diesen Funktionen und C++-Ausnahmebehandlung, dass Sie SETJMP.H oder SETJMPEX.H. einschließen.Destruktoren für lokale Objekte werden beim Entladen der Stapel aufgerufen, wenn Sie mit /EHkompilieren.Wenn Sie mit /EHs kompiliert wird und eine der Funktionen eine Funktion aufrufen, die nothrowverwendet, und wenn die Funktion, mit nothrow Aufrufe longjmpfungiert, die möglicherweise Entladen von Destruktor nicht, abhängig vom Optimierer.

Wenn Sie beabsichtigen, um den Code portabel sind, erstellen Sie nicht auf richtige Zerstörung einer framebasierten Objekten, wenn Sie nicht lokal goto mithilfe eines Aufrufs von longjmpausführen.

Siehe auch

Referenz

Die Kombination von C- (strukturiert) und C++-Ausnahmen