我正在将代码从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;
答案 0 :(得分:0)
if(passedRecord ==(recordptr)-1L) passRecord = 0L;
-1L是值-1,但是长。 if块测试passRecord是否设置为-1,如果是,则将其设置为0。
-1可能不是有效的内存地址,因此如果passRecord设置为-1,则它不指向任何内容。它被巧妙地设定为表明它不是这样的方式。
显示指针未指向任何内容的常规方法是将其设置为NULL,通常为零。 passRecord可能为-1表示它是列表的结尾。
除非有充分理由不这样做,否则您可能希望将此记录转换为使用Collection。