首页 文章

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

提问于
浏览
8

在C中使用模板时,任何错误都会导致编译器发出大量输出 . 在大多数情况下,当我正在处理大部分信息时,我需要滚动查找我感兴趣的信息,例如:

  • 列出了每个候选模板 . 我很少使用这个长列表,它只会使输出混乱 .

  • 扩展了模板特化的别名,例如 std::string 写为 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ,或扩展的typedef / alias声明 . 我希望将它们展开以便于阅读 .

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

显然,信息可能很重要,但是我希望再次编译更加冗长,并且默认情况下保持简短 .

1 回答

  • 6

    不幸的是,目前无法解决这个问题 . C 20通过引入concepts来解决这个问题,其中模板可以具有除了二进制布局之外的所有内容都受限制的抽象定义 . 违反这些定义将提供简单的错误 .

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

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

    所以,底线:直到C 20,除了你自己发明的东西之外,没有干净的解决方案 .

相关问题