Поддержка RTTI для C ++ 11 (_CPPRTTI и __GNUG__)

0

Я обновляю старый код C++.

Я натолкнулся на следующее:

    #if defined( _CPPRTTI ) || defined( __GNUG__ )
            const char* default_name{ (typeid(FooClass)).name() };
    #else
            const char* default_name{ "unknown" };
    #endif

RTTI - это информация о времени выполнения, похоже, что она имеет дело с некоторыми компиляторами, которые не поддерживали typeid().

Но этот код составляет> 15 лет.

Можно ли предположить, что поддержка RTTI существует для C++ 11?

  • 0
    Это на месте, если вы включите его.
  • 3
    Разве {} не синтаксис C ++ 11? Как это 15 лет в таком случае?
Показать ещё 1 комментарий
Теги:
c++11
rtti

1 ответ

3
Лучший ответ

Некоторые компиляторы позволяют отключить поддержку RTTI во время компиляции. Например, см. Visual C++ /GR- и GCC -fno-rtti.

Если вы не используете RTTI в своей программе (typeid, dynamic_cast и т.д.), typeid отключение RTTI во время компиляции может существенно уменьшить размер финального двоичного файла.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню