如何在gcc错误消息中隐藏默认模板参数?

tin*_*lyx 12 c++ gcc templates

读取g ++生成的错误消息通常很痛苦,因为gcc扩展名称就像

std::ostream
Run Code Online (Sandbox Code Playgroud)

在我的代码中变成了更长的形式

std::basic_ostream<char, std::char_traits<char> >
Run Code Online (Sandbox Code Playgroud)

在错误消息中.同样,gcc扩展std::stringstd::basic_string<char>.我没有看到这种扩展有任何好处,只是让我很难将错误消息和错误站点联系起来.

我想知道是否有可能告诉gcc禁用此扩展行为并使用带有默认模板参数的较短名称?

还有一个相关的问题在这里似乎是约不显示在所有长扩展名.我在这里问是否可以只显示我在代码中使用的短名称.那里的答案也没有解决问题.

qua*_*dev 2

没有编译器标志来减少或更改错误消息和相关类型/模板。

  • 自 gcc 4.9 起,gcc 支持使用-fdiagnostics-color={auto, always, never}. 请参阅此处的文档。

有许多第三方工具可以帮助您解密错误消息:

  • GCCFilter用于着色和简化错误消息(Perl 脚本)
  • ColorGCC同样的方式(Perl 脚本),git 在这里
  • STLFilt:专为 STL 相关诊断而设计的消息过滤器。请注意,它不再受支持/开发。

另外,作为一个(非常好的)替代方案,clang编译器非常非常擅长诊断和错误消息