C ++ исключения в VC, без SEH

0

Можно ли использовать VC (предпочтительно одну из последних версий) и использовать исключения C++, которые не выполняются над SEH?

ПРИМЕЧАНИЕ. Я не имею в виду прерывание исключений SEH с использованием [catch] C++ catch (/Eha \/Ehsc), я имею в виду использование исключений C++ без исключения SEH в фоновом режиме.

  • 2
    Мне любопытно узнать, какова ваша основная цель, и что вы подразумеваете под "летать вокруг". Обработка структурированных исключений может быть сложной, но не хаотичной.
  • 0
    Меняя мой ответ, сек Это было бы вопросом замены этой части среды выполнения (_CxxThrowException и др.).
Теги:
visual-studio
exception
visual-c++
seh

1 ответ

0

По умолчанию исключения C++ построены поверх SEH.

Это можно изменить, но вам придется переписать большую часть времени выполнения и реализовать логику обработки кадров самостоятельно (читайте так: много сборок).

Из-за резких различий между макетами фреймов стека в 32-битных и 64-битных строках (для x86) вы не сможете повторно использовать очень много кода между ними (64-разрядная EH также требует копания в другую область PE).

Тем не менее, если это действительно действительно необходимо, просто убедитесь, что ваш код максимально переносим, используя исключения, как и в любом другом месте. Вы можете, по большей части, притворяться, что SEH даже не существует.

  • 0
    Согласовано. SEH - это лишь частная деталь того, как VC реализует try / catch для исключений C ++. Просто игнорируйте SEH, если вам не нужно обрабатывать исключение SEH напрямую, и в этом случае вы должны использовать __try / __except вместо try / catch .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню