读取g ++生成的错误消息通常很痛苦,因为gcc扩展名称,如
std::ostream
在我的代码中转换为更长的形式,如
std::basic_ostream<char, std::char_traits<char> >
在错误消息中。同样,gcc会将std::string
扩展为std::basic_string<char>
。我没有看到这种扩展带来任何好处,只是让我很难将错误消息和错误网站联系起来。
我想知道是否有可能告诉gcc禁用此扩展行为并使用带有默认模板参数的较短名称?
有一个相关的问题here似乎没有显示长的扩展名称。我在这里问是否可以只显示我在代码中使用的短名称。答案也没有解决问题。
答案 0 :(得分:1)
没有编译器标志来减少或更改错误消息以及相关的类型/模板。
-fdiagnostics-color={auto, always, never}
。请参阅文档here。有许多第三方工具可以帮助您解密错误消息:
同样作为(非常好的)替代方案the clang compiler is very, very good at diagnosis and error messages。
答案 1 :(得分:1)
我怀疑你现在可以。一种关闭选项是fno-pretty-templates
,其行为如下:
-fno-漂亮的模板
当错误消息引用函数模板的特化时,编译器通常会打印签名 模板后跟模板参数和任何typedef或 签名中的类型名称(例如void f(T)[with T = int]而不是 void f(int))以便明确涉及哪个模板。当一个 错误消息是指类模板的特化, 编译器省略了与默认模板匹配的任何模板参数 该模板的参数。如果这些行为中的任何一个成功 更难理解错误信息而不是更容易,你可以使用 -fno-pretty-templates禁用它们。