rtti в g++
/rtti
у меня на 4.0.2
-fno-rtti
Disable generation of information about every class with virtual functions for use by the C++ runtime type identification features
(dynamic_cast and typeid). If you don't use those parts of the language, you can save some space by using this flag. Note that exception handling uses the same information, but it will generate it as needed.
стало быть, по умолчанию включена, -fno-rtti выключает
Можно было прочитать вопрос. В MSVC есть макрос _CPPRTTI, который определен если RTTI включен. Есть ли что нибудь подобное в GCC?
![](/images/graemlins/smile.gif)
Насколько я понял, аналогичного препроцессорного макро у них нет (искал в гугле и в исходниках GCC)
Можешь рассказать, зачем такая фича понадобилась?
![](/images/graemlins/smile.gif)
Обычно, если в задаче используется RTTI, то без RTTI ее нормально не решить, т.е. он необходим.
Можешь привести пример, что за задача, что решается и с RTTI, и без.
В отладочных целях исключение может вернуть имя вызывающего класса. В дебажной сборке это есть, в финале быть не должно.
Может тогда правильнее это назвать #ifdef DEBUG_BUILD, а не #ifdef _CPPRTTI?
В любой сборке может быть выключен RTTI
Google выдает
В g++ для этого можно вызвать typeid(x).name (кажется так). Если включен RTTI, то это вернет имя класса. Если не включен --- то пустую строку. Никаких #ifdef RTTI не надо.
ключик -fno-rtti не дает компилировать код типа typeid лала в gcc 3.4.
![](/images/graemlins/smile.gif)
![](/images/graemlins/smile.gif)
![](/images/graemlins/smile.gif)
![](/images/graemlins/smile.gif)
Оставить комментарий
stm8823636
как програмно определить с rtti компиляция или без?GCC 3.4