什么时候可以编译c ++没有RTTI导致问题?
我使用gcc的-fno-rtti
标志来编译我的C ++,没有运行时types信息。
假设我没有使用dynamic_cast<>
或typeid()
,有什么可能导致我以后的问题?
由于您的问题是特定于GCC,您应该仔细咨询您使用的版本的文档。 GCC 4.5.2的文档说明如下。 从我的阅读,将表明,如果你避免dynamic_cast和typeid,你应该没问题。 也就是说,我没有-fno-rtti的亲身经历。 也许你可能想详细说明你为什么使用-fno-rtti。
-fno-rtti禁用有关虚拟函数的每个类的信息生成供C ++运行时types标识特性(
dynamic_cast' and
typeid')使用。 如果你不使用这些语言的部分,你可以使用这个标志来节省一些空间。 请注意,exception处理使用相同的信息,但会根据需要生成它。 `dynamic_cast'操作符仍然可以用于不需要运行时types信息的转换,即强制转换为void *或明确的基类。
我们使用gcc没有rtti 5年没有具体问题(不使用dynamic_cast或typeid)