是否有C++ this
關鍵字的任何模擬,可以在調試C代碼時用於natvis表達式?如何從C語言中的natvis表達式引用變量本身?
我想做以下事情,並且不介意如何在沒有this
的情況下如何做到這一點。
考慮我們有一些結構在C:
typedef struct
{
int state;
//other fields follow
}TCB;
也有是全局變量:
TCB* Running;
我要讓natvis規則,將顯示該對象的基礎上,state
狀態字段和Running
變量。如果是C++,我會寫:
<Type Name="TCB">
<DisplayString Condition="state==0">Empty</DisplayString>
<DisplayString Condition="state==0x80 && Running!=this">Ready</DisplayString>
<DisplayString Condition="state==0x80 && Running==this">Running</DisplayString>
</Type>
它如何在C中完成?
謝謝!
P.S. natvis文件在gdb調試器中用於VSCode。
由於C中沒有對象,所以也沒有(需要)'this'。在C++/Java中,'this'用於使用其中一種方法來引用對象。在C中,所有函數都是全局函數,並且不與結構關聯。 – DyZ
我知道'this'是如何在C++/Java中使用的:),並且我明白它對於C語言來說是無用的,但我們在此討論的是用於調試器的natvis文件,而不是C語言表達式。我已經展示了需要'this'關鍵字的natvis文件的一部分。你知道如何在沒有'this'的情況下做到嗎? –