Вопрос

Я действительно начинаю понимать, что люди имеют в виду, когда говорят, что сообщения об ошибках C++ довольно ужасны в отношении шаблонов.Я видел ужасно длинные ошибки для таких простых вещей, как функция, не соответствующая своему прототипу.

Есть ли какие-нибудь хитрости по расшифровке этих ошибок?

РЕДАКТИРОВАТЬ:Я использую как gcc, так и MSVC.Они оба кажутся довольно ужасными.

Это было полезно?

Решение

Вы можете попробовать следующий инструмент, чтобы сделать ситуацию более разумной:

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

Другие советы

Я чертовски уверен, что не могу.Маленькие ошибки превращаются в страницы и страницы нечитаемого мусора.Обычно рано утром, перед кофе.:(

Мой единственный совет — сделайте глубокий вдох, начните сверху и попытайтесь проанализировать важную информацию.(Я знаю, легче сказать, чем сделать, правда?).

Как @Нсандерс сказал СТЛФилт это хорошее решение.Самодельный STLFilt (если вы не хотите утруждать себя установкой Perl) заключается в копировании сообщения об ошибке в редакторе и начале замены частей ошибки до тех пор, пока она не станет (более) управляемой.

например

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

В менее причудливых терминах это означает:

Заменять:

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

С:

string

Некоторые компиляторы дают лучшие сообщения, чем другие.Какой компилятор вы используете?При этом они все довольно плохие.C++0X решит большую часть этой проблемы (см. концепции), но стандарт выйдет не раньше 2009 года, а широкая поддержка, вероятно, будет даже позже :-(

По крайней мере, в Visual Studio больше информации отображается в окне «Сборка вывода», а не в списке ошибок.У меня возникла ошибка шаблона в состоянии списка ошибок: «Невозможно преобразовать Foo<int> в Foo<int>».После фактической ошибки в окне вывода было несколько строк, которые помогли мне понять, в чем заключалась реальная проблема.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top