Sen*_*Lee 3 c++ dynamic-cast rtti static-cast visual-c++
通过这个(RTTI有多贵?),似乎很清楚动态转换比静态类型比较昂贵,但我想知道在编译器选项(VS2010,/ GR-)中关闭RTTI选项是否值得
我的代码中没有动态强制转换(我用静态转换替换它们).但是(/ GR-)选项除了在使用动态强制转换时发出错误之外还有吗?那里有内存或代码优化吗?
提前致谢.
leg*_*s2k 5
直接来自MSDN(强调我的):
当/ GR打开时,编译器定义_CPPRTTI预处理器宏.默认情况下,/ GR已启用./ GR-禁用运行时类型信息. 如果编译器无法静态解析代码中的对象类型,请使用/ GR.当代码使用dynamic_cast Operator或typeid时,通常需要/ GR选项.但是,/ GR会增加图像的.rdata部分的大小.如果您的代码不使用dynamic_cast或typeid,则/ GR-可能会生成较小的图像.
当/ GR打开时,编译器定义_CPPRTTI预处理器宏.默认情况下,/ GR已启用./ GR-禁用运行时类型信息.
如果编译器无法静态解析代码中的对象类型,请使用/ GR.当代码使用dynamic_cast Operator或typeid时,通常需要/ GR选项.但是,/ GR会增加图像的.rdata部分的大小.如果您的代码不使用dynamic_cast或typeid,则/ GR-可能会生成较小的图像.
在您的情况下,看起来关闭RTTI是值得的.
归档时间:
12 年,3 月 前
查看次数:
3267 次
最近记录: