C++ C++;RTTI是否始终在所有平台上工作?
我隐约记得有人说过,运行时类型识别在某些特殊情况下可能不起作用。因此,我想问一下:C++ RTTI是否总是在默认设置的所有平台上工作,或者有可能无法实现它,或者需要在命令行参数中显式启用它?C++ C++;RTTI是否始终在所有平台上工作?,c++,rtti,C++,Rtti,我隐约记得有人说过,运行时类型识别在某些特殊情况下可能不起作用。因此,我想问一下:C++ RTTI是否总是在默认设置的所有平台上工作,或者有可能无法实现它,或者需要在命令行参数中显式启用它? 不,不总是。< /P> 例如,尽管在那里您可以简单地启用它 这类C++实现技术上是不兼容的,RTTI或异常被禁用。 < P>特别是对于小型嵌入式系统RTTI来说是不可用的。另一个例子是8位AVR目标 原因很简单:RTTI需要更多的内存来存储信息本身。因此,对于小型嵌入式系统,它通常在默认情况下是关闭的,或者
<强>不,不总是。< /P> 例如,尽管在那里您可以简单地启用它
<>这类C++实现技术上是不兼容的,RTTI或异常被禁用。 < P>特别是对于小型嵌入式系统RTTI来说是不可用的。另一个例子是8位AVR目标 原因很简单:RTTI需要更多的内存来存储信息本身。因此,对于小型嵌入式系统,它通常在默认情况下是关闭的,或者只是没有像avr gcc那样针对目标实现
<>通常在C++中保证你不支付你不使用的东西。但是RTTI是一个例子,如果您在为不需要RTTI的模块关闭它之前不使用它,那么您也需要更多内存。一些针对嵌入式平台的工具链可能会默认禁用RTTI和异常处理。可能重复:@πάνταῥεῖ 不是真的,不……那么例外情况呢?是一样的吗?@Youda008:不完全一样。一些编译器可以在某些目标上生成代码,同时进行异常处理,而不会产生一般开销。但是,在某些环境中,异常处理会产生总体开销。