返回信息流#define CREATE_BRICK_SOURCE(NAME, TPL_BRICK, CONTEXT, NEXT_BRICK) \
typedef TPL_BRICK<TYPEOF(CONTEXT), TYPEOF(*NEXT_BRICK)> __C_##NAME; \
typedef __C_##NAME *__S_##NAME; \
__S_##NAME NAME(aligned_new(__C_##NAME, CONTEXT, NEXT_BRICK));
看到这段代码,完全不知所云了
这是一条镜像帖。来源:北邮人论坛 / cpp / #77492同步于 2014/3/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求大神解释下这段宏定义怎么理解?
wentao
2014/3/17镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
可以用 g++ -E xx.cpp 看预编译之后的样子。
比如可以写下面这样一个文件:xx.cpp
#define CREATE_BRICK_SOURCE(NAME, TPL_BRICK, CONTEXT, NEXT_BRICK) \
typedef TPL_BRICK<TYPEOF(CONTEXT), TYPEOF(*NEXT_BRICK)> __C_##NAME; \
typedef __C_##NAME *__S_##NAME;\
__S_##NAME NAME(aligned_new(__C_##NAME, CONTEXT, NEXT_BRICK));
int main()
{
CREATE_BRICK_SOURCE(name,tpl_brick,context,next_brick);
return 0;
}
然后g++ -E看看效果。
大概的意思我觉得是想根据 CONTEXT和NEXT_BRICK这两者不同的类型来定义不同的数据结构吧。
比如当TPL_BRICK是一个map的话,看上去就像是一个trie树的节点类型。每个节点都指向next节点。
而且,在宏里面##是代表串接字符串的意思。查一下就懂了,没什么好晕的。
谢了,我试试
【 在 hpp 的大作中提到: 】
: 可以用 g++ -E xx.cpp 看预编译之后的样子。
: 比如可以写下面这样一个文件:xx.cpp
: #define CREATE_BRICK_SOURCE(NAME, TPL_BRICK, CONTEXT, NEXT_BRICK) \
: ...................