gpt4 book ai didi

c++ - 更简单的c++模板编译错误输出

转载 作者:可可西里 更新时间:2023-11-01 17:53:08 24 4
gpt4 key购买 nike

在 C++ 中使用模板时,任何错误都会导致编译器发出大量输出。在大多数情况下,当我处理某事时,大部分信息都是噪音,我必须四处滚动寻找我感兴趣的信息,例如:

  • 列出了每个候选模板。我很少用到这个长列表,它只会使输出困惑。
  • 扩展了模板特化的别名,例如std::string写成 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ,或扩展的 typedefs/别名声明。我宁愿让它们不展开以便于阅读。

是否有可能在 g++ 或 clang 中减少任何这些以获得更短/更简单的输出?

显然,这些信息可能很重要,但我宁愿再次编译时更加冗长,并默认保持简短。

最佳答案

不幸的是,目前没有办法处理这个问题。 C++20 通过引入 concepts 解决了这个问题,其中模板可以具有抽象定义,这些定义受限于除二进制布局之外的所有内容。违反这些定义将产生简单的错误。

目前,我深入研究了这些行,并且已经习惯了。我目前正在处理一个在某些地方有 5 个模板参数的程序。这一切都是为了习惯它并训练你的眼睛来解析内容。

但是,如果您真的遇到困难,我可能建议的一个解决方案是将所有相关的错误输出复制到某个编辑器,并执行查找和替换以简化单个表达式,使它们在每个表达式中越来越小替换,直到它变得对你可读为止。良好的正则表达式技能也可能有所帮助。在 Notepad++(或 Linux 上的 Notepadqq)中,您可以找到正则表达式并在替换中使用捕获组,其中 \1 用于第一个捕获组,\2 用于第二个,等等。

所以,底线是:在 C++20 之前,除了您自己发明的东西之外,没有干净的解决方案。

关于c++ - 更简单的c++模板编译错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53687794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com