1

我收到 LLVM 4.1 的编译器错误:

/Users/vibhor/src/mam/client_daemon/source/core/_osx/UtilSystem_OSX.cpp:261:32: Out-of-line definition of 'what' does not match any declaration in 'std::bad_typeid'

对于以下代码:

const char* ::std::bad_typeid::what() const throw() { return NULL; }

有没有办法抑制这种情况?它用 GCC 编译得很好。

4

1 回答 1

0

我最初的答案是尝试使用不同的 stdlib 进行编译,这完全不符合标准。

它看起来像是针对 10.5 SDK 编译的尝试,它的 bad_typeid 与预期不同。解决方法是保护定义:

#if defined(MAC_OS_X_VERSION_10_6) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
const char* ::std::bad_typeid::what() const throw() { return NULL; }
#endif
于 2012-10-19T19:26:44.120 回答