Pull to refresh

Comments 35

Весьма полезная информация. Спасибо.
А как эта штука реагирует на остальные ошибки, не связанные с шаблонами? Вы проводили более масштабное тестирование, если можно так выразиться?
Увы, на остальные ошибки она забивает. Каких вам еще ошибок не хватает? Вот мне бы очень бы понравилась иная обработка ошибки «отсутствие точки с запятой в конце определения класса».
А этот скриптик просто сворачивает на место typedef'ы и убирает лишние параметры шаблонов.
Можно ли его использовать для фильтрации вывода компилятора таким образом: "g++ testmap.cpp | gfilt"?
не-а. Это первое, что я решил попробовать до чтения мана. (:
думаю, если этот фильтр чуть пропатчить, то можно. На мой взгяд — не сложно.
Я спрашивал подовляет она или не изменяет другие ошибки? например про точки с запятой. Если нет то, хорошо. А вообще, сдается мне, что «лишних параметров шаблонов» не бывает ;)
К тому времени, когда аллокаторы станут для меня не лишними, а вполне понятными и легкими параметрами, я буду читать STL-ные сообщения даже в двоичном виде и нараспев.
Давно ждал что-то подобное, а написать руки не дошли. Спасибо.
По мойму, костыль этот проблему не решает, а добавляет еще кучу, надо сначала через gfilt запускать компилирование, а потом если не получилось, запускать gcc заново, смотреть другой отчет об ошибках? А ошибки в шаблонах так и не научились ловить во время компиляции?
Вы, похоже, не выспались.
> потом если не получилось, запускать gcc заново
что не получилось или может не получиться? gcc и так запускается, парсится только вывод об ошибках.
> А ошибки в шаблонах так и не научились ловить во время компиляции?
Тут речь идет только о компиляции. Ошибки все отлично ловятся и без этого скрипта, но stlfilt повышает информативность выводаю
> Вы, похоже, не выспались.
ну да, точней еще не ложился. )
По работе переключился на C#, сейчас недавние траблы с с++ вспоминать не хочется. Статья хорошая, кому-то надеюсь пригодится. А в vs похожий фильтр встроить можно чтобы Output фильтровал?
Да, там на страничке есть скриты для всех версий MSVS 200X (:
Настоящий C++ программист должен уметь читать такие ощибки :)
Я постеснялся это написать))
жаль, что не могу поставить + за ответ…
за-то смог обеть карму.
где-то у того же Скота Майерса было написано, как читать такие ошибки.
Вообще-то настоящий программист должен уметь не допускать такие ошибки.
Плохо, что с ним не будет работать, например, ccache.
а собственно, почему нет, если ccache/distcc использовать через символьные ссылки?
Потому что ccache и так работает через символьные ссылки gcc->ccache, g++->ccache etc. Он детектит тип компилятора через имя запускаемого файла. Если оно будет gfilt, ccache тупо не поймёт, какой компилятор использовать.
Я это и имел в виду: gfilt вызывает g++, который симлинк на ccache.
В итоге CXX=gfilt и всё работает.
Я подозреваю, что в этом случае ccache увидит имя бинарника как «gfilt», а не как «g++», в этом проблема. Впрочем, надо протестить.
Сообщения STL об ошибках кажутся длинными только тому, кто не работал с boost: ) Но вещица удобная. Впрочем, если постоянно работать с шаблонами в С++, вскоре начинаешь догадываться о том, какая может быть ошибка просто по наличию сообщения, толком его не читая.
Еще одна идея для тестирования этой штуковины. Подсуньте ей на вход какой-нибудь шаблон из boost. А можно сразу смесь чего-нибудь из boost. Интересно как она отреагирует на такие «ругательства».
там кажися внутри правила типа: замени std::map<куча параметров> на std::map<2-3 параметра>. Для буста, получается, нужен отдельный скриптик
А точно. он же только STL фильтр. не обратил внимание.
в gcc-trunk(4.5) не печатаются дефолтные аргументы параметров.
>test.cpp:25:18: error: no matching function for call to ‘std::map<int, double>::map(int, int, int)’
красотища! Значит, проект скоро (через годика 3, когда все перейдут на новый gcc) станет никому не нужным. (:
Да и сейчас не так уж много проблем вызывают подобные строчки, вполне читабельно.

Free Image Hosting at www.ImageShack.us
Цветовой схемой и списком не поделитесь?)
Особенно интересно, как Вы список ошибок в отдельное окно выносите и подсвечиваете.
списком плагинов*
>Цветовой схемой и списком не поделитесь?)
(defun color-theme-qb ()
"Color theme"
(interactive)
(color-theme-install
'(color-theme-qb
((background-color . "#141414")
(background-mode . dark)
(border-color . "black")
(cursor-color . "#A7A7A7")
(foreground-color . "#F8F8F8")
(mouse-color . "sienna1"))
(default ((t (:background "#141414" :foreground "#CACACA"))))
(modeline ((t (:background "#999999" :foreground "black" :box
(:line-width 1 :style
released-button)))))
(border-glyph ((t (nil))))
(buffers-tab ((t (:background "#141414" :foreground "#CACACA"))))
(font-lock-builtin-face ((t (:foreground "#CACACA"))))
(font-lock-comment-face ((t (:foreground "#5F5A60"))))
(font-lock-constant-face ((t (:foreground "#CF6A4C"))))
(font-lock-doc-string-face ((t (:foreground "DarkOrange"))))
(font-lock-function-name-face ((t (:foreground "#9B703F"))))
(font-lock-keyword-face ((t (:foreground "#CDA869"))))
(font-lock-preprocessor-face ((t (:foreground "Aquamarine"))))
(font-lock-reference-face ((t (:foreground "SlateBlue"))))
(font-lock-string-face ((t (:foreground "#8F9D6A"))))
(font-lock-type-face ((t (:foreground "#9B703F"))))
(font-lock-variable-name-face ((t (:foreground "#7587A6"))))
(font-lock-warning-face ((t (:background "#660000" :foreground "red"))))
(font-lock-regexp-grouping-backslash ((t (:foreground "#E9C062"))))
(font-lock-regexp-grouping-construct ((t (:foreground "red"))))

(minibuffer-prompt ((t (:foreground "#5F5A60"))))
(ido-subdir ((t (:foreground "#CF6A4C"))))
(ido-first-match ((t (:foreground "#8F9D6A"))))
(ido-only-match ((t (:foreground "#8F9D6A"))))
(mumamo-background-chunk-submode ((t (:background "#222222"))))

(gui-element ((t (:background "#D4D0C8" :foreground "black"))))
(region ((t (:background "#27292A"))))
(mode-line ((t (:background "grey75" :foreground "black"))))
(highlight ((t (:background "#111111"))))
(highline-face ((t (:background "SeaGreen"))))
(text-cursor ((t (:background "yellow" :foreground "black"))))
(zmacs-region ((t (:background "snow" :foreground "blue"))))

(show-paren-match-face
((t (:foreground "#2e3436" :background "#73d216"))))
(show-paren-mismatch-face
((t (:background "#ad7fa8" :foreground "#2e3436"))))
(isearch ((t (:background "#222222"))))
(isearch-lazy-highlight-face
((t (:foreground "#2e3436" :background "#e9b96e"))))
(flymake-errline ((t (:background "DarkRed"))))
(flymake-warnline ((t (:background "DarkYellow"))))
(primary-selection ((t (:background "#444444"))))
(secondary-selection ((t (:background "#666666")))))))

>как Вы список ошибок в отдельное окно выносите и подсвечиваете.
emacs > compile
Горе мне, я думал, это vim)
Извините)
И я тоже!!! (Посыпает голову пеплом) Ну да ладно, надо все равно погуглить на тему vim error hightlighting.
В принципе, ошибки такого плана возникают не так уж часто. Причем в более чем половине случаев с первого взгляда на строчку уже понятно, в чем проблема. А если не ясно — то можно и прочитать детали.
С другой стороны, может, кому-нибудь и пригодится.
Sign up to leave a comment.

Articles