首页 > 解决方案 > Visual Studio 嵌套宏/模板类调试帮助

问题描述

我试图使用 Visual Studio 2019 在 Windows 中构建 Goptical 包(https://savannah.gnu.org/projects/goptical)。它使用 DPP 库(https://code.ssji.net/hg/)抛出在 Visual Studio 下构建时出错。使用 gcc 的 Linux 构建按预期顺利进行,但我需要在带有 Visual Studio 的 Windows 上使用它。

错误来自委托类,这些委托类是使用宏进一步包裹的嵌套模板类。尝试调试,但 Visual Studio 似乎没有查明错误的确切位置,而是指向触发错误的最后一行。

是否有任何机制可以让我们看到宏定义逐步回滚?或者,我们可以检查以逐步调试此中间输出?在下面发布有问题的代码和错误详细信息:

1> delegate(578,1): error C2059: syntax error: ','
1> delegate(578): message : see reference to class template instantiation 'dpp::delegate_bind<base,R(void),3>' being compiled

代码:

#if DPP_DELEGATE_ARGC >= 2
  _DPP_DELEGATE(2)
  _DPP_DELEGATE_FUNC(2)
  _DPP_DELEGATE_MEMBER(2)
  _DPP_DELEGATE_MEMBER_THIS(2)
  _DPP_DELEGATE_BIND(1, 1, 1, _DPP_DELEGATE_BTDEFS(1, 0), _a0, a0);
  _DPP_DELEGATE_BIND(2, 1, 1, _DPP_DELEGATE_BTDEFS(1, 1), a0, _a0);
  _DPP_DELEGATE_BIND(3, 0, 2, _DPP_DELEGATE_BTDEFS(2, 0, 1), _a0, _a1);
#endif

标签: c++visual-studiotemplatesmacros

解决方案


我建议你可以设置YesProperties->C/C++->Preprocessor->Preprocess to file. XXX.i然后,您可以在项目的调试文件夹中 看到文件中的宏定义。在此处输入图像描述

在此处输入图像描述


推荐阅读