PostgreSQL 中的 lfirst

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

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

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

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

看到 pg_list.h,才明白:

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

原来如此。

但是令我不解的是, 这么做的目的是什么? 是一种优雅的表达?会不会引起误解?

你可能感兴趣的:(PostgreSQL)