繁体   English   中英

在natvis文件中使用宏?

[英]Using macros in natvis files?

我刚刚了解了Visual Studio中的.natvis文件,并且已经为我的Ruby C ++ Extension项目设置了一些文件。 http://msdn.microsoft.com/en-us/library/jj620914.aspx

但是,然后我尝试在条件语句中使用Ruby宏之一,然后出现错误:

Natvis: C:\Users\Thomas\Documents\Visual Studio 2013\Visualizers\SUbD.natvis(79,4): Error: identifier "NIL_P" is undefined
    Error while evaluating 'NIL_P(value_)' in the context of type 'SUbD.so!SUbD::ruby::Numeric'.

我正在尝试的规则是这样的:

<Type Name="SUbD::ruby::Numeric">
  <DisplayString Condition="NIL_P(value_)">Ruby Numeric: Nil</DisplayString>
  <DisplayString>Ruby Numeric: {value_}</DisplayString>
</Type>

在我的项目中,我将Ruby的VALUE类型包装在小型C ++包装器类中,以用于常见类型,例如StringHashArray等。而且我已经能够为它们设置natvis规则。 但是,每当我想使用Ruby系统中的某些宏时,总会出错。

natvis文件中不能使用宏吗?

http://msdn.microsoft.com/en-us/library/jj620914.aspx#BKMK_Expressions_and_formatting

“ Natvis表达式是在可视化对象的上下文中而不是当前堆栈框架中评估的。” 调试器无法评估预处理器宏,因此可视化器也不能。 您需要“手动”扩展表达式的预处理器宏。 例如,如果NIL_P定义为:

#define NIL_P(v) !((VALUE)(v) != Qnil)

然后,您的natvis DisplayString标记必须为:

<DisplayString Condition="!((VALUE)(value_) != Qnil)">Ruby Numeric: Nil</DisplayString>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM