Известно что м MSVC есть вариант функции "longjmp" (если включен <SETJMP.H>), вызывающий деструкторы объектов в стеке, аналогично "throw".
Как бы реализовать такую функцию в GCC? Очевидно что вся нужная информация для вызова деструкторов должна быть доступна где-то в стеке, ею пользуется throw.
Конечно проблему можно решить и с помощью стандартный throw/catch, но при глубокой рекурсии будет ведь вызываться каждый catch по пути раскрутки стека, плюс к тому проверяться типы обработчиков catch. То есть если заранее известно куда возвратить управление, то setjmp/longjmp работает значительно быстрее.
Posted via RSDN NNTP Server 1.9 alpha
Здравствуйте, _lee, Вы писали:
про то как работают исключения в VC можно кое-точ прочитать
здесь (там маловато, но для твоих нужд достаточно, да и код есть)
В том то и дело что механизм исключений VC (основанный на Windows SEH) существенно отличен от GCC.
Интересует как раз последний.
> про то как работают исключения в VC можно кое-точ прочитать здесь (там маловато, но для твоих нужд достаточно, да и код есть)Posted via RSDN NNTP Server 1.9 alpha