GCC编译器标志,用于在编译期间抑制模板扩展以避免模板错误

gcc compiler flag to suppress template expansion for template errors during compilation?

本文关键字:扩展 错误 标志 编译器 用于 编译 GCC      更新时间:2023-10-16

我想知道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’

我想要这样的东西:

temp.cc:9: error: class has no member named hat.

没有。编译器试图帮助您识别导致问题的类。它只知道这个类是其模板类型的扩展。

gcc没有这个标志,但是sed可以很容易地解决这个问题。