我有一个C++转换单元,我需要为其中的两个类禁用RTTI,但没有别的。是否有类似#pragma rtti(off)的东西或我可以使用的东西?

我只需要为该类禁用RTTI。我不会抛出或捕获或dynamic_cast或此类之类的东西,因此我根本不需要RTTI。它的方法的实现当然需要在RTTI上进行编译,因为它们确实可以引发异常,这只是我需要抑制的一个typeinfo对象的生成。

最佳答案

要在g++中禁用特定类的RTTI,而不能进行其他操作(在有限的测试用例上进行测试,请谨慎行事):

  • 将类定义移动到单独的头文件中。
  • 向您的类(class)添加一个新的虚拟函数virtual void nortti();。使其成为第一个虚拟功能。
  • 将其实现放在单独的源文件中。使用fno-rtti编译该文件。
  • 正常编译其余类的实现。
  • 关于c++ - 禁用某些类别的RTTI,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23912955/

    10-14 17:05