使用 setjmp/longjmp

請勿使用 setjmplongjmp 在 C++ 程式。 這些函式並不支援 C++ 物件的語意。此外,在 C++ 程式中使用這些函式可能會降低效能藉由避免區域變數的最佳化。使用 C++ 例外處理 try/catch 而建構。

如果您必須使用setjmp/longjmp在 C++ 程式中,這些函式和 C++ 例外處理之間的互動行為需要您包含 SETJMP。H 或 SETJMPEX。H.解構函式的本機物件會期間內,呼叫堆疊回溯如果使用編譯 /EH。如果您使用編譯/EHs,而是一個函式呼叫的函式,會使用 nothrow,而且如果函式,使用nothrow呼叫longjmp、 解構函式回溯可能不會發生,則最佳化器而定。

此外,如果您想要您的程式碼可攜性,不要依賴正確解構時,畫面格架構的物件執行非本機 goto 使用的呼叫時longjmp

請參閱

參考

混合 (結構化) 的 c 和 C++ 例外狀況