暂无图片
关于ob_obj_type.h文件中的SELECT_TC宏的理解
我来答
分享
暂无图片 匿名用户
关于ob_obj_type.h文件中的SELECT_TC宏的理解

在学习ob底层的数据类型实现时,看到这样定义一个数组的方式:

const ObObjTypeClass OBJ_TYPE_TO_CLASS[ObMaxType] =
{
LST_DO(SELECT_TC, (,), OBJ_TYPE_TC_PAIRS)
};

关于SELECT_TC宏的定义如下:

#define SELECT_SECOND(x, y) y
#define SELECT_TC(arg) SELECT_SECOND arg

我的疑问点:
正常如果定义了宏#define SELECT_TC(arg) SELECT_SECOND arg,那么使用方式不应该是SELECT_TC(...)这样的形式吗,为什么这里的直接使用SELECT_TC。求助各位大佬解惑。

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
O
OceanBase社区传送门

SELECT_TC这是个专用的宏,要结合这里的LST_DO来用,所以你看下面它又把SELECT_TC给undef掉了 LST_DO比较难理解,是一种比较高阶的宏技巧,定义你可以看deps/oblib/src/lib/utility/ob_macro_utils.h自己学习下 这里你只需要知道 LST_DO(SELECT_TC, (,), arg1, arg2, arg3…) 会展开成 SELECT_TC(arg1), SELECT_TC(arg2), SELECT_TC(arg3), … 也就是 SELECT_SECOND arg1, SELECT_SECOND arg2, SE…

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏