RTTI支持C ++ 11(_CPPRTTI和__GNUG__)

时间:2014-11-17 00:56:54

标签: c++ c++11 rtti

我正在更新一些旧的C ++代码。

我遇到过以下情况:

    #if defined( _CPPRTTI ) || defined( __GNUG__ )
            const char* default_name{ (typeid(FooClass)).name() };
    #else
            const char* default_name{ "unknown" };
    #endif

RTTI是运行时类型信息,看起来它正在处理某些不支持typeid()的编译器。

但是这段代码是> 15岁。

可以假设对C ++ 11有RTTI支持吗?

1 个答案:

答案 0 :(得分:4)

某些编译器允许您在编译时禁用对RTTI的支持。例如,请参阅Visual C ++的/GR-和GCC的-fno-rtti

如果您不在程序中使用RTTI(typeiddynamic_cast等),那么在编译时禁用RTTI可能会大大减少最终二进制文件的大小。