【问题标题】:How to view template compiler error details in Visual Studio如何在 Visual Studio 中查看模板编译器错误详细信息
【发布时间】:2016-01-03 17:25:06
【问题描述】:

我正在使用 Visual Studio 2015,我遇到了很多编译器错误,但我无法弄清楚这些错误的根本原因是什么:

双击突出显示的错误将我带入list 文件到operator==

template<class _Ty,
class _Alloc> inline
bool operator==(const list<_Ty, _Alloc>& _Left,
    const list<_Ty, _Alloc>& _Right)
{   // test for list equality
return (_Left.size() == _Right.size()
    && _STD equal(_Left.begin(), _Left.end(), _Right.begin()));
}

嗯,这没有帮助。由于我正在从事一个大型项目,我不知道该错误的根本原因在哪里,即使用std::list 的代码在哪里导致此错误?

如果我没记错的话,我认为 XCode 会显示此类错误的堆栈。
如何找出此错误的根源?

【问题讨论】:

  • IIRC 还有一个构建控制台窗口,您可以在其中检查原始文本输出,包括相关注释。
  • 没有高于或低于这个? Visual Studio 真的是其中的一部分吗?我的 VIm 给了我更好的错误管理...
  • 特别是“输出”选项卡。如果快捷方式与 MSVS2013 上的相同,则 Ctrl-Alt-O 应该会调出它
  • 双击该行,切换到构建输出,向下滚动,直到找到代码并双击那里(烦人!)
  • 对于遇到类似问题的任何人:我很确定这是某种内部 Visual Studio 错误,由 Visual Studio 无法处理某种#include 命令引起GCC 或 Clang 编译器没有问题。我的“解决方案”是在我的源文件中注释掉并重新排列(任意?)#include 指令,直到出现更有意义的编译器错误。

标签: c++ visual-studio templates compiler-errors visual-studio-2015


【解决方案1】:

正如 cmets 中所讨论的,“输出”选项卡 (Ctrl+Alt+O) 显示来自编译器的所有消息。错误列表选项卡仅显示一条消息,即实际错误,正如您所说,对于模板编译问题,它不是很有帮助。我发现效果很好(这有点乏味,但确实有效),是

  1. 双击错误列表选项卡中的消息。
  2. 切换到“输出”选项卡
  3. 使用 F8 跳到链中的下一条消息(shift-F8 跳到上一条消息)

【讨论】:

  • 是的,如果没有出现我在评论中描述的内部 Visual Studio 错误,则输出选项卡可能会提供一些附加信息。
  • 有时将预处理器输出发送到文件(/P 编译器标志)可以帮助我找到类似的问题。
猜你喜欢
  • 1970-01-01
  • 2013-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-23
相关资源
最近更新 更多