何时可以在没有RTTI的情况下编译c ++会导致问题?

时间:2010-12-20 03:15:08

标签: c++ gcc rtti

我正在使用gcc的-fno-rtti标志来编译没有运行时类型信息的C ++。

假设我没有使用dynamic_cast<>typeid(),是否有任何可能导致我以后出现问题的内容?

2 个答案:

答案 0 :(得分:35)

由于您的问题是针对GCC的,因此您应该仔细查阅您正在使用的版本的文档。 GCC 4.5.2的文档说明如下。从我的阅读中可以看出,如果你避免使用dynamic_cast和typeid,你应该没问题。也就是说,我没有-fno-rtti的亲身经历。也许您可能想详细说明为什么使用-fno-rtti。

  

-fno-RTTI
  禁止生成有关每个类的信息   C ++使用的虚函数   运行时类型识别功能   (dynamic_casttypeid)。如果你   不要使用该语言的那些部分,   你可以用这个来节省一些空间   旗。请注意异常处理   使用相同的信息,但它会   根据需要生成它。该   dynamic_cast运营商仍然可以   用于不需要的演员阵容   运行时类型信息,即强制转换   到void *或明确的基础   类。

答案 1 :(得分:5)

我们使用没有rtti的gcc 5年没有特定问题(不使用dynamic_cast或typeid)