Ответ 1
Что означает включение/отключение исключений?
Передача флага компилятору, который отключает стандартное соответствие по отношению к исключениям и не создает никакой поддержки исключений.
Что произойдет, если я использую DLL, в которой могут произойти исключения?
Если какая-либо библиотека обрабатывает исключение изнутри, ничего. Если он позволяет ему уйти от вызывающего (я никогда не видел библиотеки, которая делает это из-за проблем с ABI, но что бы там ни было), ваша программа вылетает (в лучшем случае), поскольку она не может ее обработать. Если для DLL есть оболочка, в которую входит ваш код, и которая преобразует коды ошибок в исключения (общее вхождение), то она такая же, как если бы вы использовали исключения в своем коде.
Становится ли код более медленным в целом или только те части, где программа входит/выходит из блоков try/catch, становится медленнее? По словам автора, оба они верны.
Обратите внимание, что книга, которую вы цитируете, является старой. Компиляторы развиваются. Современные компиляторы используют исключения с нулевой себестоимостью, которые не приводят к стоимости исполнения, если исключение не выбрасывается. Обработка исключений делает исполняемый файл более крупным, так как он должен генерировать все данные и код, необходимые для обработки исключений, но он не должен замедлять работу на не исключительном пути.
Как я могу скомпилировать без исключений? Могу ли я это сделать, даже если у меня есть блоки try/catch?
Вы делаете это по-компилятору. Обратитесь к документации вашего компилятора. Обычно это делает код отклонения компилятора, содержащий любые средства, связанные с исключениями, например. укажите try
как непризнанный идентификатор.