Re[5]: Как убедить MSVC 10 в том, что виртуальная функция не ки
От: Andrew S Россия http://alchemy-lab.com
Дата: 06.02.15 17:01
Оценка:
AS>>>С т.з. VC __declspec(nothrow) говорит не о том, что функция не будет выбрасывать исключений для внешнего кода (что можно проверить, указав это для функции и убедиться, что код обработки исключений из внешнего кода не исчезает), а о том, что внутри функции не выбрасываются исключения, если иное не следует явно. И внутри функции, промаркированной как throw() как раз код обработки исключений в этом случае отсутствует.

PD>>Да, ты прав. Но это не отменяет того, что я сказал — выбрасывать SEH исключения она все равно может.


AS>Так вопрос то в другом — как убедить компилятор, что C++ исключений быть не может и SEH фрейм, который он делает только для этого, тут не нужен.


Поправлюсь — VC на самом деле учитывает и внешнй скоп для throw() функций. Но только не для виртуальных. Для них он делает seh frame вне зависимости от их спецификации исключений/наличия прагмы. Похоже, ms не очень заботится о размере COM-овского и ему подобного кода .
http://www.rusyaz.ru/pr — стараемся писАть по-русски
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.