从编译器设置中关闭 RTTI 有什么好处?

What's the advantages of turning off RTTI from compiler setting?

本文关键字:什么 RTTI 编译器 设置      更新时间:2023-10-16

this(rtti多么昂贵?),很明显,动态铸造比静态类型比较昂贵,但是我想知道是否值得关闭编译器中的RTTI选项选项(VS2010,/gr-)

我的代码中没有动态铸件(我用静态铸件代替了它们)。但是(/gr-)选项除了在使用动态铸造时发出错误以外是否有其他操作?其中是否有内存或代码优化?

预先感谢。

直接从msdn(强调矿山):

/gr打开时,编译器定义了_cpprtti预处理器宏。默认情况下,/gr已打开。/gr-禁用运行时类型信息。

使用/gr如果编译器无法在代码中静态解析对象类型。当您的代码使用Dynamic_cast Operator或TypeID时,通常需要/GR选项。但是,/gr增加了图像的.rdata部分的大小。如果您的代码不使用dynamic_cast或typeID,/gr-可能会产生较小的图像。

在您的情况下,关闭RTTI是值得的。

可能有一些内存减少(由于不需要RTTI所需的数据),但是在大多数实际情况下,您会发现它完全可以忽略不计,因此在大多数实际情况下它。