禁用rtti的后果?

use*_*970 0 c++ gcc clang

g++ 和 clang++ 都可以选择使用-fno-rtti.

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

rav*_*avi 5

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

-fno-rtti
Run Code Online (Sandbox Code Playgroud)

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

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