在ev.h
libev 内部,我发现了一些看起来很奇怪无法理解的宏:
173 # define EV_P struct ev_loop *loop /* a loop as sole parameter in a declaration */
174 # define EV_P_ EV_P, /* a loop as first of multiple parameters */
作者将宏定义EV_P_
为EV_P,
并将其用作函数定义中的第一个参数,如下所示:
int ev_run (EV_P_ int flags EV_CPP (= 0));
很好奇为什么不直接写EV_P,
而不是EV_P_
,所以函数参数用逗号看起来会更清楚:
int ev_run (EV_P, int flags EV_CPP (= 0));
这是C中的一个技巧还是有其他原因?不熟悉C,之前google了一下,还是没有答案。