compiling

Как запретить g++отображать примечания к ошибкам

При компиляции ошибки часто сопровождаются длинной серией примечаний (голубого цвета).Существует ли флаг g++,чтобы отключить это,показывая только саму ошибку?





Компилятор не будет делать это за вас, но (пока...) разработчики компилятора следуют давнему (более 30 лет) соглашению, адаптированному из других компиляторов, которое дает важную информацию в первой строке, используя error: или warning: отметить предупреждение. Если вы выполните grep stderr для них, вы увидите минимальную информацию о предупреждениях/ошибках.

grep - хорошая отправная точка (и вывод "grep -n" полезен сам по себе). Эти сообщения следуют шаблону имени файла, номера строки, сообщения, который является общим для нескольких инструментов. Я использовал это в vi-like-emacs здесь .

Совсем недавно (в 2014 году) gcc/g++ начал добавлять к сообщениям «стек вызовов», который дает дополнительную информацию. Это связано с изменением препроцессора для отслеживания номеров строк, которые можно отключить с помощью параметра -P (отмечено здесь ), но это, по-видимому, не полностью интегрировано в форму, которая подавляет стек вызовов.

Использование clang не сильно поможет в этом; это также может быть очень многословным. Разработка gcc/g++ добавила много сообщений, как указано здесь .




При компиляции ошибки часто сопровождаются длинным следом (голубым цветом). Есть ли флаг g++ , чтобы отключить это, показывая только саму ошибку?

  • Вы можете использовать старый и больше не поддерживаемый инструмент, такой как STLFilt .

  • Вы можете переключиться на Clang или использовать его только для сообщения об ошибках и выполнения окончательной компиляции в GNU g++ .

  • Вы можете лучше познакомиться с STL,что облегчит расшифровку.

    Хорошее понимание STL и того, как его использовать, поможет вам в первую очередь избежать множества ошибок. Во-вторых, часто сообщения об ошибках относятся к функциям в исходном коде STL — если у вас есть приблизительное представление о том, как реализована STL, это может быть чрезвычайно полезно для расшифровки того, о чем идет речь в сообщении об ошибке. Новейшие версии компилятора g++ иногда улучшают вывод, делая его более полезным и менее подробным.

Это не совсем то,что вы хотите,но это может сократить выход:

  • Используйте флаг -fmax-errors или параметр -Wfatal-errors :

    -fmax-errors=n

    Ограничивает максимальное количество сообщений об ошибках до n, после чего GCC отключается, а не пытается продолжить обработку исходного кода. Если n равно 0 (по умолчанию), количество создаваемых сообщений об ошибках не ограничено. Если также указано -Wfatal- errors , то -Wfatal-errors имеет приоритет над этой опцией.

    -Wfatal-errors

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