Ответ 1
Поскольку ваш вопрос относится к GCC, вам следует внимательно ознакомиться с документацией к используемой вами версии. Документация для GCC 4.5.2 гласит следующее. Который из моего чтения будет означать, что если вы избегаете dynamic_cast и typeid, у вас должно быть все в порядке. Тем не менее, у меня нет личного опыта с -fno-rtti. Возможно, вы захотите рассказать, почему вы используете -fno-rtti.
-fno-RTTI
Отключить генерацию информации о каждом классе с помощью виртуальные функции для использования C++ функции идентификации типа во время выполнения (dynamic_cast
иtypeid
). если ты не используйте эти части языка, Вы можете сэкономить место с помощью этого флаг. Обратите внимание, что обработка исключений использует ту же информацию, но это будет генерировать его по мере необходимости. Операторdynamic_cast
все еще может быть используется для слепков, которые не требуют информация о типе времени выполнения, т.е. кvoid *
или к однозначной базе классы.
Обсуждение взаимосвязи между виртуальными функциями и RTTI доступно в Нет RTTI, но все еще виртуальные методы. Короче говоря, виртуальные функции должны работать без RTTI.