OVS のソース コードを見ていると、今まで見たことのない非常に奇妙なコードが見つかりました。
https://github.com/openvswitch/ovs/blob/master/lib/ovs-rcu.h
void ovsrcu_postpone__(void (*function)(void *aux), void *aux);
#define ovsrcu_postpone(FUNCTION, ARG) \
((void) sizeof((FUNCTION)(ARG), 1), \
(void) sizeof(*(ARG)), \
ovsrcu_postpone__((void (*)(void *))(FUNCTION), ARG))
多引数 sizeof の意味は検索でわかりました
2 つの引数で sizeof 演算子を呼び出すのはなぜですか? http://www.vxdev.com/docs/vx55man/diab5.0ppc/c-additi.htm#3001432
FUNCTION の戻り値が int で、ARG の型が char の場合、マクロはこの形式になります。
((void) 4, (void) 1, ovsrcu_postpone__((void (*)(void *))(function), arg))
ovsrcu_postpone__ メソッドの前の 2 つの引数の役割をキャッチできません。