相关疑难解决方法(0)

gcc编译器标志在编译期间抑制模板错误的模板扩展?

我想知道是否有gcc编译器的标志或修改将返回行号和句子,当它遇到涉及模板​​的错误时解释错误的类型,但是不会打印模板扩展代码的页面,它总是跟随这样的错误.

例如,而不是像这样的错误:

temp.cc:9: error: ‘class std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char,     std::char_traits<char>, std::allocator<char> > > > >’ has no member named ‘hat’
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西:

temp.cc:9: error: class has no member named hat.
Run Code Online (Sandbox Code Playgroud)

c++ compiler-construction gcc templates

5
推荐指数
1
解决办法
371
查看次数

缩短GCC错误消息

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

虽然它通常是有用的,但它通常也不是,因为问题只是呼叫站点的简单错字.在这种特殊情况下,它甚至没有帮助,因为甚至需要花费相当长的时间来找出哪一行最终导致了这个问题.

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

#include <string>
#include <iostream>

struct Z{};

void foo() {

    std::string s;
    Z z;

    std::cout << z; // typo - meant s 
}
Run Code Online (Sandbox Code Playgroud)

请参阅错误输出:https://godbolt.org/g/wz5vL2

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

c++ gcc

3
推荐指数
1
解决办法
138
查看次数

标签 统计

c++ ×2

gcc ×2

compiler-construction ×1

templates ×1