Detect presence or absence of arguments in a C macro
问题 How can one define a C macro IFARGS(YES, NO, ...) such that invoking IFARGS with no additional arguments produces NO , and invoking IFARGS with one or more arguments produces YES ? I have an answer using GCC (see below), but I'd prefer one for C99 if possible (or a proof of its impossibility). 回答1: In C99 it is possible to detect if a macro argument is empty, but making that robust against all odds that may appear in that argument (arguments that are themselves expanding, contain () and stuff