#define's with variable length argument lists?
Checkpoint Technologies
ckp at grebyn.com
Fri Nov 30 16:58:00 AEST 1990
In article <9340 at pasteur.Berkeley.EDU> foote at miro.Berkeley.EDU (Bill Foote) writes:
>: #define glorp(a,b,c) _glorp(__FILE__, __LINE__, a, b, c)
>: glorp(3.1415926, 0x666, "glorp has intelligent error messages!");
>
>That's great, but what if glorp can have a variable-length argument list?
>I know that I could do the following:
>: #define glorp(a) { _set_error(__FILE__, __LINE__); \
>: _glorp a }
>: glorp((27, "This is ugly!"));
>but this is inefficient, ugly, and breaks all of my existing applications.
Just off the top of my head... This may work for you.
: #define glorp _set_error(__FILE__,__LINE__), _glorp
The macro definition specifies _no_ parameters. Specifically,
whatever parenthesised expression you code following a call to glorp is
not considered part of the macro expansion, but will simply appear as
the parameters to the enclosed trailing call to _glorp.
--
First comes the logo: C H E C K P O I N T T E C H N O L O G I E S / /
\\ / /
Then, the disclaimer: All expressed opinions are, indeed, opinions. \ / o
Now for the witty part: I'm pink, therefore, I'm spam! \/
More information about the Comp.lang.c
mailing list