如何禁用 g++ 显示错误注释?

如何禁用 g++ 显示错误注释?

编译时,错误通常伴随着一长串注释(青色)。是否有 g++ 标志可以禁用此功能,仅显示错误本身?

答案1

编译器不会为您执行此操作,但是(到目前为止...)编译器开发人员正在遵循从其他编译器改编而来的长期(30 多年)约定,该约定在第一行提供了基本信息,使用error:或者warning:来标记警告。如果你 grep标准错误对于这些,您将看到最少的警告/错误信息。

grep 是一个很好的起点(并且“grep -n”输出本身很有用)。这些消息遵循多种工具通用的文件名、行号、消息的模式。我在 vi-like-emacs 中使用了它这里

最近(2014 年)gcc/g++ 开始向消息添加“调用堆栈”,以提供额外的信息。这依赖于对预处理器的更改来跟踪行号,可以使用选项关闭该行号-P(注意到这里),但这似乎未完全集成在会抑制调用堆栈的形式中。

使用 clang 对此没有多大帮助;它也可能非常冗长。 gcc/g++ 开发添加了许多消息,如上所述这里

答案2

编译时,错误常常伴随着很长的痕迹(青色)。有没有克++标志来禁用此功能,只显示错误本身?

  • 您可以使用旧的且不再受支持的工具,例如STL过滤器

  • 您可以切换到,或者使用它仅报告错误并在中执行最终编译GNU g++

  • 您可以更加熟悉 STL,这将使破译变得更容易。

    对 STL 以及如何使用它的充分理解将帮助您首先避免很多错误。其次,错误消息通常引用 STL 源代码中的函数 - 如果您大致了解 STL 的实现方式,这对于破译错误消息的内容非常有帮助。最新版本的克++编译器有时会改进输出,使其更有用且更简洁。

不完全是你想要的,但它可以缩短输出:

  • 使用-fmax-错误旗帜或-W致命错误选项:

    -fmax-错误=n

    将错误消息的最大数量限制为 n,此时 GCC 将退出而不是尝试继续处理源代码。如果 n 为 0(默认值),则生成的错误消息的数量没有限制。如果-W致命错误也被指定,那么-W致命错误优先于该选项。

    -W致命错误

    此选项会导致编译器在发生第一个错误时中止编译,而不是尝试继续编译并打印更多错误消息。

相关内容