ev_vars.h

VAR(name, type name)以及VARx(type, name)

在ev.c文件中有 “VAR(name,decl) decl;”;

所以 VAR(name, type name)展开就是 type name; 即定义一个变量;

VARx(type, name)展开就是 type name; 也是定义一个变量;

ev.h

EV_P, EV_P_, EV_A, EV_A_, EV_WATCHER*等

“#define EV_P_ EV_P,”展开就是 “struct ev_loop *loop,”,

“#define EV_A_ EV_A,”展开就是 “loop,”,

而在libev中可以看见很多这样的函数 func(EV_P_ type arg1, type arg2), 把宏展开就是func(struct ev_loop *loop, arg1, arg2), 所以EV_P_的最大作用是作为函数的形参;

那么在调用函数时可以使用 func(EV_A_ arg1, arg2), 宏展开就是func(loop, arg1, arg2), 所以EV_A_的最大作用是作为函数的实参;

EV_WATCHER(type)展开就是一系列的变量定义,在ev_watcher, ev_watcher_list等结构体中,就成了结构体成员变量了;

所以以上提到的宏,个人认为仅仅是为了方便,少写点代码!