Boost logo

Boost Users :

Subject: Re: [Boost-users] [preprocessor] removing parentheses
From: John B. Turpish (jbturp_at_[hidden])
Date: 2010-08-04 19:07:22


On Wed, Aug 4, 2010 at 4:05 PM, Edward Diener <eldiener_at_[hidden]> wrote:
> I have a single macro parameter which allows its passed value to contain
> commas. Therefore the user of the macro needs parentheses around the
> parameter if it contains one or more commas ( to does not have to ). When
> processing this parameter in a macro I would like to remove the outer
> parentheses if they are there before passing the value on for further
> processing. Is there a way to do this using some preprocessor library macro
> ?

Have you considered using a variadic macro? I hear they're not
available for all C++ precompilers, but it may do what you want:
Instead of
#define YOUR_MACRO( NOCOMMASALLOWED ) NOCOMMASALLOWED
you might use
#define YOUR_MACRO( ... ) __VA_ARGS__
I know it's only "one" argument you're after, but this would at least
pull the commas through in-tact.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net