g ++和clang ++都可以选择通过-fno-rtti
禁用RTTI。
这样做的所有后果是什么?
最佳答案
您应该查阅GCC和Clang的文档。以下是GCC documentation的摘录:
-fno-rtti
禁止生成带有虚拟函数的每个类的信息,以供C ++运行时类型标识功能使用
(
dynamic_cast
和typeid
)。如果您不使用语言,则可以使用此标志节省一些空间。注意
异常处理使用相同的信息,但会生成该信息
如所须。
dynamic_cast
运算符仍可用于强制转换不需要运行时类型信息,即强制转换为
void*
或明确的基类。
这意味着,如果您不使用
typeid()
和dynamic_cast
,则应该可以。关于c++ - 禁用rtti的后果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26409786/