Внутри 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 его раньше, но до сих пор нет ответов.