禁用rtti的后果?

时间:2014-10-16 16:50:28

标签: c++ gcc clang

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

这样做的后果是什么?

2 个答案:

答案 0 :(得分:4)

您应该查阅GCC和Clang的文档。以下是海湾合作委员会documentation的摘录:

-fno-rtti
     

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

这意味着如果您没有使用typeid()dynamic_cast,那么它应该没问题。

答案 1 :(得分:0)

使用RTTI的主要功能是dynamic_cast<>typeid,因此您将无法使用它们。