Поделиться через


Использование setjmp/longjmp

Не использовать setjmp и longjmp в программах C++; эти функции не поддерживают семантику объекта C++.Кроме того, использование этих функций в программах C++ может ухудшить производительность за счет предотвращения создания оптимизацию для локальных переменных.Используйте обработку исключений C++ try или catch конструкции.

Если необходимо использовать setjmp/longjmp в программе НА языке C++, взаимодействие между этими функциями и обработкой исключений С++ необходимо включить SETJMP.H или SETJMPEX.H.Деструкторы для локальных объектов будут вызваны во время стека раскрутки при компилировании с /EH.При компилировании с /EHs и пользовательских функций вызов функции, которая использует nothrow, если функция, которая использует nothrow вызовы longjmpдеструктор очистки не может произойти в зависимости от оптимизатора.

Кроме того, если планируется код, чтобы быть переносимыми, то не следует полагаться на верхнем разрушении кадр-основанных объектов при выполнении nonlocal переход с помощью вызова longjmp.

См. также

Ссылки

Смешивание (structured C# и исключений C++)