Есть ли способ сказать gcc не заменять имена typedef и параметры по умолчанию при сообщениях об ошибках?

69
9

Например, этот код:

#include <vector>

template<typename T>
void useVector(T);

using thing = std::vector<int>;

int main()
{
std::vector<thing> vec;
useVector(vec);
return 0;
}

Выдает слишком подробное сообщение:

/home/martin/Projects/TestGrounds/main.cpp:11: error: undefined reference to 
'void useVector<std::vector<std::vector<int, std::allocator<int> >,
std::allocator<std::vector<int, std::allocator<int> > > >
>(std::vector<std::vector<int, std::allocator<int> >,
std::allocator<std::vector<int, std::allocator<int> > > >)'

Есть ли способ подавить компилятор, заменив все typedefs и параметры по умолчанию, и произведет что-то вроде:

/home/martin/Projects/TestGrounds/main.cpp:11: error: undefined reference to 
void useVector(std::vector<thing>);

?

спросил(а) 2014-10-25T05:51:00+04:00 5 лет, 9 месяцев назад
1
Решение
56

Как предложил Евгений Константин Динка, я пробовал gccfilter.

Ошибка вывода уменьшается до:

/tmp/ccEixtdl.o: In function 'main':
test.cpp:(.text+0x30): undefined reference to 'void useVector<>(std::vector<>)'
collect2: error: ld returned 1 exit status

Это огромное улучшение.

Сначала вам нужно загрузить скрипт gccfilter perl и поместить его в $ PATH. Затем вам необходимо установить указанные модули Perl. В Ubuntu я просто сделал:

cpan App::cpanminus
cpanm Term::ANSIColor
cpanm Getopt::ArgvFile
cpanm Getopt::Long
cpanm Regexp::Common

Вы можете протестировать скрипт, сохранив исходный код из исходного вопроса в качестве test.cpp и запустите:

gccfilter --colorize --remove-template-args g++ -std=c++11 test.cpp

Если вы используете компоновщик, вам нужно запустить компоновщик, используя:

gccfilter --colorize --remove-template-args g++

также. Если вы используете qmake, вы можете добавить:

QMAKE_CXX="gccfilter -c -a g++"
QMAKE_LINK="gccfilter -c -a g++"

в ваш .pro файл. Для QtCreator это нарушит просмотр сообщений об ошибках на вкладке " Проблемы ", но вы можете просмотреть отформатированные и упрощенные сообщения об ошибках на вкладке " Вывод компиляции ".

ответил(а) 2015-03-14T11:06:00+03:00 5 лет, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема