如果(passedRecord ==(recordptr)-1L)passRecord = 0L,这段代码是做什么的;

时间:2014-02-25 17:15:14

标签: c++ visual-c++

我正在将代码从MS Visual C ++转换为C#。 以下代码正在做什么

**if( passedRecord == (recordptr)-1L )
        passedRecord = 0L;**

typedef struct _desc {
    descprocsptr    pptr;       
    desctype        type;       
    size_t          size;
    int             id;
    void *          data;       
}   desc, *descptr;

typedef descptr listptr;
typedef listptr     recordptr;
recordptr passedRecord;

1 个答案:

答案 0 :(得分:0)

if(passedRecord ==(recordptr)-1L)         passRecord = 0L;

-1L是值-1,但是长。 if块测试passRecord是否设置为-1,如果是,则将其设置为0。

-1可能不是有效的内存地址,因此如果passRecord设置为-1,则它不指向任何内容。它被巧妙地设定为表明它不是这样的方式。

显示指针未指向任何内容的常规方法是将其设置为NULL,通常为零。 passRecord可能为-1表示它是列表的结尾。

除非有充分理由不这样做,否则您可能希望将此记录转换为使用Collection。