Шаг 17.
Опции компилятора, относящиеся к обработке исключений и динамическому определению типов (RTTI)

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

    Доступ к установке перечисленных ниже опций можно получить либо с помощью задания ключей компилятору в командной строке, либо из интегрированной среды разработки (IDE) Borland C++ 4.0/4.5, из меню Options | Project |C++ Options |Exception Handling / RTTI:


Рис.1. Окно задания опций

    Если вы используете компилятор командной строки, то для того, чтобы установить некоторую опцию, необходимо задать соответствующий ключ, а для того, чтобы ее отменить - тот же ключ, но с последующим символом '-'. Например, для задания разрешения поддержки исключений (см. ниже) необходимо запустить компилятор с ключом , а для того, чтобы такую поддержку запретить - с ключом -х-.

-х Enable Exceptions - Разрешить поддержку исключений. (По умолчанию = ON, т.е. опция включена).
Попытка использования исключений и процедур их обработки без этой опции вызовет появление ошибки при компиляции: "Exception handling not enabled in function ...". Выключение этой опции может быть полезно, например, если вы хотите удалить обработку исключений из вашей программы (скажем, для переноса ее на другую платформу или перехода на другой компилятор).

-хр Enable Exception Location Information - Разрешить получение информации о месте порождения исключения. (По умолчанию = OFF, т.е. опция отключена)
Эта опция предоставляет возможность получения информации о месте возникновения исключительной ситуации (название файла и номер строки) во время выполнении программы (смотри функции __throwFileName и __throwLineNumber).

-xd Enable Destructor Cleanup - Разрешить вызов деструкторов. (По умолчанию = ON, т.е. опция включена)
Если эта опция установлена, то в случае порождения исключения для всех объектов, созданных между областями видимости операторов catch и throw, происходит вызов соответствующих деструкторов. Заметим, что для динамических объектов автоматического вызова деструкторов не происходит и динамические объекты автоматически не освобождаются.

-xf Enable Fast Exception Prologs - Разрешить генерацию "быстрого" начального кода. (По умолчанию = OFF, т.е. опция отключена)
Эта опция указывает компилятору, что необходимо осуществить подстановку inline-выражений во все функции обработки исключений. Это повышает надежность программы, но увеличивает ее размер (размер получающегося ЕХЕ-модуля). Заметим, что выбор этой опции возможен лишь при отключенной опции Enable Compatible Exception.

-хc Enable Compatible Exceptions - Разрешить совместимость исключений. (По умолчанию = OFF, т.е. опция отключена)
Эта опция позволяет создавать с помощью Borland C++ ЕХЕ и DLL модули, совместимые с ЕХЕ-модулями, созданными другими программами. Если вы установите эту опцию, то в исполняемый ЕХЕ-файл будет включена некоторая информация, касающаяся обработки исключений (даже при выключенной опции Enable Exceptions).

-RT Enable Runtime Type Information - Разрешить динамическое получение информации о типах объектов. (По умолчанию = ON, т.е. опция включена)
Указание этой опции сообщает компилятору о необходимости построения кода, позволяющего производить определение типов объектов во время исполнения программы. Если вы используете ключ -xd, то вам необходимо, как правило, указывать и эту опцию, поскольку в противном случае вы не сможете удалить указатель на класс с виртуальным деструктором. Поэтому обычно эта опция используется одновременно с опцией -xd (Enable Destructor Cleanup).

   




Предыдущий шаг Содержание