RTTI в Visual Studio Community 2017

Nov 29, 2019 18:25

Продолжаю разбирать учебник Лафоре. Оригинал, стр.553:

For both dynamic_cast and typeid to work, your compiler must enable Run-Time Type Information (RTTI). Borland C++ Builder has this capability enabled by default, but in Microsoft Visual C++ you’ll need to turn it on overtly. See Appendix C “Microsoft Visual C++” for details on how this is done. You’ll also need to include the header file TYPEINFO.
Перевод, стр.523:

Чтобы заработали dynamic_cast и typeid, компилятор должен активизировать механизм, который позволяет определять и изменять тип объекта во время выполнения программы - RTTI (Run-Time Type Information). В системе Borland С++ Builder этот механизм включается по умолчанию, а в Microsoft Visual C++ нужно подключать его вручную. Также необходимо включить в программу заголовочный файл TYPEINFO.
Нетрудно заметить, что переводчик зачем-то выкинул ссылку на приложение «C» учебника (я выделил эту фразу красным в оригинале). В переводе на русский это приложение «В» учебника, стр.806. Несмотря на то, что текст учебника, как я уже упоминал, написан больше 18 лет назад, нужная настройка в интерфейсе сегодняшнего аналога указанной программы тех лет находится практически по тому же пути.

В среде «Visual Studio Community 2017», кстати, механизм RTTI включен по умолчанию. А вообще он включается и выключается ключом компилятора /GR:
https://docs.microsoft.com/en-us/cpp/build/reference/gr-enable-run-time-type-information

До этой настройки можно добраться через свойства проекта: пункт главного меню «Проект - Свойства». В левой части открывшегося окна в меню «Свойства конфигурации» следует выбрать ветку «C/C++», в ней - ветку «Язык». Тогда в правой части окна станут видны свойства ветки «Язык», в том числе свойство «Включить информацию о типах времени выполнения», с помощью которого можно выключить или выключить RTTI.

Перевод названия свойства, конечно, ужасный. Можно понять так, что у «времени выполнения программы» есть какие-то типы. Нормальный перевод - «Включить RTTI» (кому это нужно, те знают расшифровку этой аббревиатуры) или, на крайний случай, «Включить динамическую идентификацию типов данных» (так называется статья в википедии, посвященная RTTI).

Образование, Программирование, Английский язык

Previous post Next post
Up