Можно ли использовать VC (предпочтительно одну из последних версий) и использовать исключения C++, которые не выполняются над SEH?
ПРИМЕЧАНИЕ. Я не имею в виду прерывание исключений SEH с использованием [catch] C++ catch (/Eha \/Ehsc), я имею в виду использование исключений C++ без исключения SEH в фоновом режиме.
По умолчанию исключения C++ построены поверх SEH.
Это можно изменить, но вам придется переписать большую часть времени выполнения и реализовать логику обработки кадров самостоятельно (читайте так: много сборок).
Из-за резких различий между макетами фреймов стека в 32-битных и 64-битных строках (для x86) вы не сможете повторно использовать очень много кода между ними (64-разрядная EH также требует копания в другую область PE).
Тем не менее, если это действительно действительно необходимо, просто убедитесь, что ваш код максимально переносим, используя исключения, как и в любом другом месте. Вы можете, по большей части, притворяться, что SEH даже не существует.
try
/ catch
для исключений C ++. Просто игнорируйте SEH, если вам не нужно обрабатывать исключение SEH напрямую, и в этом случае вы должны использовать __try
/ __except
вместо try
/ catch
.