最近在学习 PostgreSQL 的语法分析。
看到 lappend函数,其中有一句:
lappend(List *list, void *datum) { …… lfirst(list->tail) = datum; …… }
lfirst 到底是什么,好神秘,函数的返回值被赋值?
看到 pg_list.h,才明白:
#define lfirst(lc) ((lc)->data.ptr_value)
原来如此。
但是令我不解的是, 这么做的目的是什么? 是一种优雅的表达?会不会引起误解?