PostgreSQL 中的 lfirst

最近在学习 PostgreSQL 的语法分析。

看到 lappend函数,其中有一句: 

lappend(List *list, void *datum)    
{    
    ……
    lfirst(list->tail) = datum;
    ……
}    

lfirst 到底是什么,好神秘,函数的返回值被赋值?

看到 pg_list.h,才明白:

#define lfirst(lc)              ((lc)->data.ptr_value)

原来如此。

但是令我不解的是, 这么做的目的是什么? 是一种优雅的表达?会不会引起误解?
posted @ 2012-09-10 08:22  健哥的数据花园  阅读(646)  评论(0编辑  收藏  举报