Question

Je commence vraiment à comprendre ce que les gens veulent dire lorsqu'ils disent que les messages d'erreur du C++ sont assez terribles en ce qui concerne les modèles.J'ai vu des erreurs horriblement longues pour des choses aussi simples qu'une fonction ne correspondant pas à son prototype.

Existe-t-il des astuces pour déchiffrer ces erreurs ?

MODIFIER:J'utilise à la fois gcc et MSVC.Ils semblent tous les deux assez terribles.

Était-ce utile?

La solution

Vous pouvez essayer l'outil suivant pour rendre les choses plus saines :

http://www.bdsoft.com/tools/stlfilt.html

Autres conseils

Je ne peux certainement pas.Les petites erreurs explosent en pages et pages de courrier indésirable illisible.Généralement tôt le matin, avant le café.:(

Mon seul conseil est de prendre une profonde respiration, de commencer par le haut et d’essayer d’analyser les informations importantes.(Je sais, plus facile à dire qu'à faire, non ?).

Comme @nsanders dit STLFilt est une bonne solution.Un STLFilt fait maison (lorsque vous ne voulez pas vous donner la peine d'installer Perl) consiste à copier le message d'erreur dans un éditeur et à commencer à remplacer des parties de l'erreur jusqu'à ce qu'elle devienne (plus) gérable.

par exemple.

s/std::basic_string<char,std::char_traits<char>,std::allocator<char>>/string/g 

En termes moins geek, cela signifie :

Remplacer:

std::basic_string<char,std::char_traits<char>,std::allocator<char>>

Avec:

string

Certains compilateurs donnent de meilleurs messages que d'autres.Quel compilateur utilisez-vous?Cela dit, ils sont tous plutôt mauvais.C++0X résoudra la plupart de ce problème (voir notions), mais la norme ne sera publiée qu'en 2009, et un large support sera probablement encore plus tard que cela :-(

Au moins dans Visual Studio, il y a plus d'informations fournies dans la fenêtre Output Build plutôt que dans la liste des erreurs.J'ai eu une erreur de modèle dans l'état de la liste d'erreurs, "Impossible de convertir Foo<int> en Foo<int>".Il y avait quelques lignes suivant l'erreur réelle dans la fenêtre Sortie qui m'ont aidé à déchiffrer quel était le problème réel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top