2012-10-19 3 views
1

Je reçois une erreur de compilation avec LLVM 4.1:Comment ne pas tenir compte hors ligne erreur de définition dans Xcode avec 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' 

pour le code suivant:

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

Y at-il un moyen de supprimer cela? Il compile bien avec GCC.

+0

Sans donner plus de contexte, c'est un peu difficile. Quelle est la définition de 'bad_typeid'? Peut-être que c'est juste qu'il y a un décalage ... –

Répondre

0

Ma réponse originale, qui consistait à essayer de compiler avec un autre fichier stdlib, était complètement hors base.

Cela ressemble à une tentative de compilation par rapport au SDK 10.5, dont le paramètre bad_typeid est différent de celui attendu. La solution de contournement est un garde autour de la définition:

#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 
+0

Merci! J'ai essayé, mais cela n'a pas aidé. –

+0

Ce code est une solution de contournement pour un bogue dans le SDK 10.6 - http://lists.apple.com/archives/xcode-users/2010/May/msg00183.html il semble donc que vous compilez le 10.5 ou plus tôt SDK, qui * n'a pas * la même définition de bad_typeid (c'est-à-dire qu'il n'a pas la déclaration what()). Je vais mettre à jour la réponse avec la solution de contournement recommandée du message – Petesh

+0

Et encore plus génial si vous regardez l'en-tête 'typeinfo' dans 10.8, il semble que la déclaration' :: what' est gardée par un '__TARGETING_4_0_DYLIB' ifdef – Petesh

Questions connexes