编译时,错误通常伴随着一长串注释(青色)。是否有 g++ 标志可以禁用此功能,仅显示错误本身?
答案1
编译器不会为您执行此操作,但是(到目前为止...)编译器开发人员正在遵循从其他编译器改编而来的长期(30 多年)约定,该约定在第一行提供了基本信息,使用error:
或者warning:
来标记警告。如果你 grep标准错误对于这些,您将看到最少的警告/错误信息。
grep 是一个很好的起点(并且“grep -n”输出本身很有用)。这些消息遵循多种工具通用的文件名、行号、消息的模式。我在 vi-like-emacs 中使用了它这里。
最近(2014 年)gcc/g++ 开始向消息添加“调用堆栈”,以提供额外的信息。这依赖于对预处理器的更改来跟踪行号,可以使用选项关闭该行号-P
(注意到这里),但这似乎未完全集成在会抑制调用堆栈的形式中。
使用 clang 对此没有多大帮助;它也可能非常冗长。 gcc/g++ 开发添加了许多消息,如上所述这里。
答案2
编译时,错误常常伴随着很长的痕迹(青色)。有没有克++标志来禁用此功能,只显示错误本身?
您可以使用旧的且不再受支持的工具,例如STL过滤器。
您可以更加熟悉 STL,这将使破译变得更容易。
对 STL 以及如何使用它的充分理解将帮助您首先避免很多错误。其次,错误消息通常引用 STL 源代码中的函数 - 如果您大致了解 STL 的实现方式,这对于破译错误消息的内容非常有帮助。最新版本的克++编译器有时会改进输出,使其更有用且更简洁。
不完全是你想要的,但它可以缩短输出:
使用-fmax-错误旗帜或-W致命错误选项:
-fmax-错误=n
将错误消息的最大数量限制为 n,此时 GCC 将退出而不是尝试继续处理源代码。如果 n 为 0(默认值),则生成的错误消息的数量没有限制。如果-W致命错误也被指定,那么-W致命错误优先于该选项。
-W致命错误
此选项会导致编译器在发生第一个错误时中止编译,而不是尝试继续编译并打印更多错误消息。