target_list 中的 list_make1 的含义

简介:
看 gram.y 中的 target_list 的定义:

target_list:                                    
            target_el                { $$ = list_make1($1); }        
            | target_list ',' target_el                { $$ = lappend($1, $3); }        
        ;                            
而list_make1 到底是什么呢?

#define list_make1(x1)              lcons(x1, NIL)
#define list_make2(x1,x2)           lcons(x1, list_make1(x2))
#define list_make3(x1,x2,x3)        lcons(x1, list_make2(x2, x3))
#define list_make4(x1,x2,x3,x4)     lcons(x1, list_make3(x2, x3, x4))
PostgreSQL 中对宏的使用,是否有些随心所欲了。

本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/archive/2012/09/10/2678215.html,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
安全 C#
C# List基本用法
C# List基本用法
|
6月前
|
存储 算法 C++
【C++】List -- 详解(上)
【C++】List -- 详解(上)
|
6月前
|
存储 编译器 C++
【C++】List -- 详解(下)
【C++】List -- 详解(下)
|
6月前
|
存储 自然语言处理 C++
【C++】Map和Set -- 详解(上)
【C++】Map和Set -- 详解(上)
|
算法 IDE 开发工具
【Python语法】类型提示(self, nums: List[int]) -> List[int],报错NameError: name ‘List‘ is not defined解决
【Python语法】类型提示(self, nums: List[int]) -> List[int],报错NameError: name ‘List‘ is not defined解决