簡體   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