Udostępnij za pośrednictwem


Za pomocą setjmp/longjmp

Nie należy używać setjmp i longjmp w języku C++ programów; Funkcje te nie obsługują semantykę obiektów C++.Także korzystając z tych funkcji programów C++ może obniżyć wydajność poprzez zapobieganie optymalizacji na zmiennych lokalnych.Użyj obsługę wyjątków C++ try/catch zamiast konstrukcje.

Jeśli musisz użyć setjmp/longjmp w programie C++, interakcji między te funkcje i obsługę wyjątków C++ wymaga, aby SETJMP.H lub SETJMPEX.H.Destruktory dla obiektów lokalnych będzie wywoływana podczas stosu relaks Jeśli kompilacji z /EH.Jeśli kompilacji z/EHs i jednej z funkcji programu należy wywołać funkcję, która korzysta z nothrow, i jeśli funkcja używający nothrow wywołania longjmp, unwind destruktora nie może występować w zależności od Optymalizator.

Również, jeżeli zamierzasz swój kod, aby być przenośne, nie polegać na poprawne zniszczenia na podstawie ramki obiektów podczas wykonywania nielokalne goto, za pomocą wywołania longjmp.

Zobacz też

Informacje

Mieszanie C (struktura) i wyjątki C++