Подтвердить что ты не робот

Когда можно скомпилировать С++ без проблем RTTI?

Я использую флаг gcc -fno-rtti для компиляции моего С++ без информации о времени выполнения.

Предполагая, что я не использую dynamic_cast<> или typeid(), есть ли что-нибудь, что могло бы привести меня к более поздним проблемам?

4b9b3361

Ответ 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.

Ответ 2

Мы использовали gcc без rtti в течение 5 лет без особых проблем (не используя dynamic_cast или typeid)