On 5 Jan 2005 05:29:09 -0800, foaud167
<f.*******@gmail.com> wrote:
i was looking at the code of GNU m4 (/src/eval.c to be specific) and
saw this in function prototypes
static eval_error logical_or_term _((eval_token, eval_t *));
__________________________________^
what is this underscore for?
Underscore is a valid character for an identifier. Admitedly it's not
usual to just have _ as a name, but that's presumably why it's used.
In this case, you should find it in a #define in a header file
somewhere, defining a macro. This is used to switch function prototype
arguments off for pre-ISO compilers, something like:
#ifdef NO_PROTOTYPES
#define _(x) ()
#else
#define _(x) x
#endif
Thus if NO_PROTOTYPES is defined, the prototype you quote will be
static eval_error logical_or_term ();
otherwise (normally now) it will be
static eval_error logical_or_term (eval_token, eval_t *);
Chris C