g ++和clang ++都可以选择通过-fno-rtti禁用RTTI。

这样做的所有后果是什么?

最佳答案

您应该查阅GCC和Clang的文档。以下是GCC documentation的摘录:


-fno-rtti

  
  禁止生成带有虚拟函数的每个类的信息,以供C ++运行时类型标识功能使用
  (dynamic_casttypeid)。如果您不使用
  语言,则可以使用此标志节省一些空间。注意
  异常处理使用相同的信息,但会生成该信息
  如所须。 dynamic_cast运算符仍可用于强制转换
  不需要运行时类型信息,即强制转换为void*
  明确的基类。


这意味着,如果您不使用typeid()dynamic_cast,则应该可以。

关于c++ - 禁用rtti的后果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26409786/

10-12 02:11