禁用rtti的后果

Consequences of disabling rtti?

本文关键字:后果 rtti 禁用      更新时间:2023-10-16

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

这样做的后果是什么?

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

-fno-rtti

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

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

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