缩短 GCC 错误消息

2024-02-20

每当gcc无法找到具有多个重载的函数的匹配重载,它会给出一行又一行的错误,解释尝试了哪个重载以及为什么不使用它。

虽然它通常很有用,但也常常没有用,因为问题是调用站点上的一个简单的拼写错误。在这种特殊情况下,它甚至没有帮助,因为甚至需要相当长的时间才能找出哪条线路最终对这个问题负责。

是否有任何命令行切换到 GCC 来缩短输出并仅包含实际的触发行?例如:

#include <string>
#include <iostream>

struct Z{};

void foo() {

    std::string s;
    Z z;

    std::cout << z; // typo - meant s 
}

查看错误输出:https://godbolt.org/g/wz5vL2 https://godbolt.org/g/wz5vL2

小额补充:第三方解决方案(STLFilt、gccfilter 等)不符合要求,因为 a) 我的工作环境不欢迎安装第 3 方应用程序,b) 它们往往会变得无人维护,并停止使用下一个编译器升级


一种方法是使用-Wfatal-errors。它将错误消息更改为

<source>: In function 'void foo()':

<source>:11:15: error: no match for 'operator<<' (operand types are 'std::ostream {aka std::basic_ostream<char>}' and 'Z')

     std::cout << z; // typo - meant s

     ~~~~~~~~~~^~~~

In file included from /opt/compiler-explorer/gcc-7.3.0/include/c++/7.3.0/iostream:39:0,

                 from <source>:2:

/opt/compiler-explorer/gcc-7.3.0/include/c++/7.3.0/ostream:108:7: note: candidate: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ostream_type& (*)(std::basic_ostream<_CharT, _Traits>::__ostream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]

       operator<<(__ostream_type& (*__pf)(__ostream_type&))

many more lines of errors

to

    <source>: In function 'void foo()':

<source>:11:15: error: no match for 'operator<<' (operand types are 'std::ostream {aka std::basic_ostream<char>}' and 'Z')

     std::cout << z; // typo - meant s

     ~~~~~~~~~~^~~~

compilation terminated due to -Wfatal-errors.

Compiler returned: 1

唯一的缺点是你只会得到第一个错误。如果您的编译时间很长,那么这并不是最好的,因为在修复第一个错误并重新编译之前,您将无法修复任何其他错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

缩短 GCC 错误消息 的相关文章

随机推荐

  • 如何在Android Studio中制作选择器

    在学习课程时 我被指示为 Button 制作一个 xml 选择器 课程说要在 Eclipse 中制作新的 Android xml 但我使用的是 Android Studio 另外 当我自定义编写代码时 它会给我一个错误 它说 必须声明元素选
  • 如何使用JS下载视频标签?

    我有一个链接 我想从中下载视频
  • uitableview 在 iOS 中删除按钮图像

    我想更改 uitableview 单元格的滑动按钮图像 我已经搜索过了 但没有得到想要的结果 我用过这段代码 void willTransitionToState UITableViewCellStateMask state super w
  • 在一次调用中从多个表中选择

    在我的代码中 我有一个页面 其中包含来自 3 个不同表的信息 为了显示此信息 我进行了 3 个 SQL 选择调用 并将它们合并在一个列表中 以作为模型传递到我的视图 我可以通过一次 SQL 调用来完成此操作吗 数据之间没有任何联系 My c
  • 如何创建特定(R、G、B)颜色的 openCV 图像并获取该颜色名称?

    我需要创建一个填充一些 R G B 颜色的图像 并获得该颜色名称 例如 R G B 黑色或红色等 我们可以用 openCV 做这样的事情吗 如何做 具有静态方法的静态颜色图类 两个答案相结合 只需复制并使用即可 pragma once in
  • 按时间范围删除数据存储中的行

    我有一个 CKAN 数据存储 其中有一个名为 recvTime 的时间戳类型列 即在 datastore create 时使用 timestamp 作为类型 如这个链接所示 https github com telefonicaid fiw
  • 在php中从json_decode()获取值时出错?

    我有一个示例代码 description 2G Network GSM 850 900 1800 1900 3G Network HSDPA 850 900 1700 1900 2100 data json decode descripti
  • haskell中完整的缩进规则集

    从哪里可以获得 Haskell 代码编写的完整缩进规则集 过去的问题与我的以下问题类似 导致我提出上述问题 错误消息背后的原因是什么 parse error on input something 我收到的错误消息 Baby hs 103 2
  • 如何获取 git 中多个项目的任何分支中特定用户的提交列表?

    我在多个 git 项目的多个分支工作 我想获得所有这些项目和分支中特定日期的提交列表 用于时间表目的 虽然我可以为此目的编写实用程序脚本 但我不想重新发明轮子 有没有一种简单的方法可以使用现有的基于 UNIX 的工具或一些 git 高级用户
  • 选择两个 IP 范围之间的记录

    我有一张桌子 里面存放着ID Name Code IPLow IPHigh例如 1 Lucas 804645 192 130 1 1 192 130 1 254 2 Maria 222255 192 168 2 1 192 168 2 25
  • 将类型添加到 std 命名空间

    是否可以接受向std命名空间 例如 我想要一个 TCHAR 友好的字符串 那么以下可以接受吗 include
  • sass 无法编译,文件不可读或找不到

    转换错误 Jekyll Converters Sass 在转换时遇到错误 ng assets css all sass 找不到或无法读取要导入的文件 1 tools tools dir 1号线 这是我每次运行 Jekyll 时都会遇到的错误
  • 根据名称选择列表元素

    我有一个指定的向量列表 表示源自 2 个样本 A 和 B 的事件 l temp lt list SF1 t A c rep 1 10 SF2 t A c rep 9 15 SF1 t B c rep 8 12 l temp SF1 t A
  • 如何在 PDFSharp 中遍历 Pdf 对象树?

    我正在尝试使用 C 中的 PDFSharp 遍历现有 PDF 文档中的 PdfItem 对象树 我想创建一个所有对象的层次结构 类似于 PDF Explorer 示例所做的 但我希望它是一棵树而不是所有对象的平面列表 根节点是 docume
  • 函数模板的 typedef 的最佳替代方案?

    我想做的是这样的 template
  • Rails 5 Action Cable 与 Nginx、Puma 和 Redis 一起部署

    我正在尝试使用 Capistrano 将启用 Action Cable 的应用程序部署到 VPS 我正在使用 Puma Nginx 和 Redis 用于电缆 经过几个障碍后 我能够让它在本地开发环境中运行 我正在使用默认的进程内 cable
  • ASP.Net 6自定义WebApplicationFactory抛出异常

    我正在将现有的 ASP Net 5 Web 应用程序迁移到 ASP Net 6 并遇到了通过集成测试的最后障碍 我自定义 WebApplicationFactory 并抛出异常 Changing the host configuration
  • 打印浮点型/双精度型而不带尾随零? [复制]

    这个问题在这里已经有答案了 有几个与此相关的问题 但我还没有看到正确回答这个问题的人 我想打印一个浮点数 但我希望小数位数是自适应的 举个例子 0 gt 0 1234 gt 1234 0 1234 gt 0 1234 0 3 gt 0 3
  • Python pandas dataframe:找到另一列的每个唯一值的最大值

    我有一个大型数据框 从 500k 到 1M 行 其中包含例如这 3 个数字列 ID A B 我想过滤结果以获得如下图所示的表格 其中对于列 id 的每个唯一值 我都有 A 和 B 的最大值和最小值 我能怎么做 编辑 我已经更新了下面的图像以
  • 缩短 GCC 错误消息

    每当gcc无法找到具有多个重载的函数的匹配重载 它会给出一行又一行的错误 解释尝试了哪个重载以及为什么不使用它 虽然它通常很有用 但也常常没有用 因为问题是调用站点上的一个简单的拼写错误 在这种特殊情况下 它甚至没有帮助 因为甚至需要相当长