Jack Asked: 2018-02-13 13:41:22 +0800 CST2018-02-13 13:41:22 +0800 CST 2018-02-13 13:41:22 +0800 CST 如何禁用 g++ 显示错误注释? 772 编译时,错误通常伴随着冗长的一系列注释(青色)。是否有一个 g++ 标志来禁用它,只显示错误本身? compiling gcc 2 个回答 Voted Rob 2018-02-13T17:02:23+08:002018-02-13T17:02:23+08:00 编译时,错误通常伴随着冗长的痕迹(青色)。是否有一个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优先于该选项。 -W致命错误 此选项导致编译器在发生第一个错误时中止编译,而不是尝试继续并打印更多错误消息。 Best Answer Thomas Dickey 2019-05-14T00:42:14+08:002019-05-14T00:42:14+08:00 编译器不会为您执行此操作,但(到目前为止......)编译器开发人员遵循从其他编译器改编而来的长期(30 多年)约定,该约定在第一行提供基本信息,使用error:或warning:标记警告. 如果您为这些 grep stderr,您将看到最少的警告/错误信息。 grep 是一个很好的起点(“grep -n”输出本身很有用)。这些消息遵循文件名、行号、消息的模式,这对几种工具都是通用的。我在 vi-like-emacs 中使用了它。 最近(2014 年)gcc/g++ 开始向消息中添加“调用堆栈”,从而提供额外的信息。这依赖于对预处理器的更改来跟踪可以使用选项关闭的行号(在此处-P注明),但这似乎没有完全集成在抑制调用堆栈的形式中。 使用 clang 对此无济于事;它也可能非常冗长。gcc/g++ 开发已经添加了很多信息,如此处所述。
您可以使用旧的且不再受支持的工具,例如STLFilt。
您可以切换到Clang ,或使用它仅报告错误并在GNU g++中执行最终编译。
您可以更加熟悉 STL,这将使解密更容易。
对 STL 以及如何使用它的良好理解将帮助您从一开始就避免很多错误。其次,错误消息通常指的是 STL 源代码中的函数——如果您大致了解 STL 是如何实现的,那么这对于破译错误消息的内容非常有帮助。最新版本的g++编译器有时会改进输出,使其更有帮助且不那么冗长。
不完全是您想要的,但它可以缩短输出:
使用-fmax-errors标志或-Wfatal-errors选项:
编译器不会为您执行此操作,但(到目前为止......)编译器开发人员遵循从其他编译器改编而来的长期(30 多年)约定,该约定在第一行提供基本信息,使用
error:
或warning:
标记警告. 如果您为这些 grep stderr,您将看到最少的警告/错误信息。grep 是一个很好的起点(“grep -n”输出本身很有用)。这些消息遵循文件名、行号、消息的模式,这对几种工具都是通用的。我在 vi-like-emacs 中使用了它。
最近(2014 年)gcc/g++ 开始向消息中添加“调用堆栈”,从而提供额外的信息。这依赖于对预处理器的更改来跟踪可以使用选项关闭的行号(在此处
-P
注明),但这似乎没有完全集成在抑制调用堆栈的形式中。使用 clang 对此无济于事;它也可能非常冗长。gcc/g++ 开发已经添加了很多信息,如此处所述。