如何限制编译 C++ 程序后显示的错误消息的数量?

如何限制编译 C++ 程序后显示的错误消息的数量?

我正在编译一个 C++ 程序g++,每次都会出现大量错误,迫使我每次想要查看第一个(也是最相关的)错误时都要向上滚动。我想知道在编译程序时是否有一个选项可以允许我限制终端中显示的错误消息的数量。

答案1

您可以使用选项-fmax-errors=1将错误数设置为 1 等。默认 0 是无限的。这海湾合作委员会选项适用于g++.

答案2

您有多种选择:

  • 在编译器完全放弃之前,使用编译器选项设置错误消息数量的限制,如另一个答案所示。
  • 使用head,记住错误消息被发送到标准错误当然。或者使用其中之一许多围绕后处理 GCC 输出浮动的工具。还要记住,对于采用 clang 模型的现代 GCC 版本,单个错误可能跨越多行,因此低行数head可能根本没有多大用处。
  • 使用分页器,例如pagerpgmoreless,再次记住错误消息被发送到标准错误
  • 在 NeoVIM 中运行编译命令:terminal,它提供了大量的回滚功能,当然还有所有常用的 VIM 导航键序列,用于快速转到输出顶部并进行搜索。
  • 与您的文本编辑器集成。

后者是最有趣的选择。它至少有两种口味:

  • 将编译器的标准输出+标准错误写入文件,并告诉文本编辑器将其视为错误文件。使用 Vim 和 NeoVIM 可以完成此操作
    vim -q 错误文件
    nvim -q 错误文件
    errors_file当然,您可以在其中替换您选择的名称。

    这将打开文本编辑器,并将错误文件加载到快速修复缓冲区中,并且第一个错误或警告消息的文件将打开并定位在该错误的行号(和列)处。

  • 从文本编辑器中运行编译器。使用 Vim 和 NeoVIM,如果有 makefile,则可以使用命令调用它:make,VIM/NeoVIM 会将运行时的错误输出make放入快速修复列表中,再次自动定位到第一个错误或警告的文件、行和列信息。

有了这两种方法,人们当然可以使用:cnext中列出的各种其他 Vim/NeoVIM 快速修复列表导航命令从一个警告/错误的位置移动到下一个警告/错误的位置:help :cc。请注意,没有理由限制这些机制的错误数量,并且有 Vim/NeoVIM 命令可以返回到当前消息的位置,或返回到第一条消息的位置。

特别是对于后者,还可以使用 和 多次运行并:make在旧错误列表和新错误列表之间来回更改。 (还可以使用、 VIM/NeoVIM 手册中的更多内容更改为运行除 、 之外的其他程序。):colder:cnewer:makemakeset makeprg

使用 emacs 可以做类似的事情。

答案3

用于compiling-command | head --lines 32输出输出中的前 32 行compiling-command
您还可以用来compiling-command | grep "Text to search" | head --lines 32显示“要搜索的文本”的前 32 个查找结果。

使用 gcc禁用-Wall选项不会输出那么多错误。

相关内容