禁用rtti的后果
Consequences of disabling rtti?
g++和clang++都可以使用-fno-rtti
禁用RTTI。
这样做的后果是什么?
您应该查阅GCC和Clang的文档。以下是GCC文件的摘录:
-fno-rtti
禁用生成关于每个具有虚拟函数的类的信息,以供C++运行时类型标识功能使用(
dynamic_cast
和typeid
)。如果你不使用语言,您可以通过使用此标志来节省一些空间。请注意异常处理使用相同的信息,但它会生成根据需要。dynamic_cast
运算符仍可用于强制转换不需要运行时类型信息,即强制转换为void*
或到明确的基类。
这意味着,如果您没有使用typeid()
和dynamic_cast
,那么应该没问题。
使用RTTI的主要功能是dynamic_cast<>
和typeid
,因此您将无法使用它们。
相关文章:
- dynamic_cast without RTTI
- 使用 RTTI 克隆唯一指针的向量
- 使用 nullptr 作为 std::unordered_map 的键有什么后果吗?
- std:任何没有RTTI的,它是如何工作的
- 启用和禁用 RTTI 的模块之间的兼容性
- 在形式参数列表中自动使用 const 和按引用传递的任何明显后果
- 需要二人补码的 C++20 的后果
- C++中的dynamic_cast在没有 RTTI 的情况下不起作用;为什么?
- 使用C RTTI(内置)通过字符串查找功能指针
- 为什么C++不使用集中存储类型信息以实现高效的 RTTI
- 将继承更改为虚拟的后果?
- clang, std::function and -fno-rtti
- 如何在没有RTTI的情况下设计动态类型系统
- 在C++中使用异常的可能的错误处理策略是什么,它们的后果和影响是什么
- 有没有一种方法可以使用RTTI获得基于签名的typeinfo损坏的函数名
- 使用 RTTI(或返回类型标记的虚函数)是否正常
- 我什么时候应该使用删除?(在动态创建的2D数组之后未删除的后果)
- 无法在不使用RTTI构建LLVM的情况下链接LLVM编译器教程程序
- 我可以在代码库中有选择地禁用RTTI以减少二进制尺寸
- 禁用rtti的后果