|
Boost Users : |
Subject: Re: [Boost-users] [preprocessor]:issues with expansion.
From: Nathan Ridge (zeratul976_at_[hidden])
Date: 2012-12-20 01:47:18
> Date: Wed, 19 Dec 2012 20:13:23 -0800
> From: jeffrey.hellrung_at_[hidden]
> To: boost-users_at_[hidden]
> Subject: Re: [Boost-users] [preprocessor]:issues with expansion.
>
> On Wed, Dec 19, 2012 at 3:58 PM, Littlefield, Tyler
> <tyler_at_[hidden]<mailto:tyler_at_[hidden]>> wrote:
> hello all:
> I have the following code:
> #define REGISTER_MODULE(module)(\
> #ifdef BOOST_PP_EQUAL(BOOST_PP_LIST_SIZE(MODULES), 0)\
> //there are currently no modules in the list.
> #define MODULES((module), BOOST_PP_NIL)
> #else
> BOOST_PP_LIST_APPEND(MODULES, module)\
> #endif
> )
>
> I am somewhat of a newb at preprocessor magic, so any advice would be
> useful. For whatever reason this translates out to 'module)' when I try
> to compile it with -E -P.
> The idea is that it will add to the modules list (assuming the modules
> list exists) the module to be registered, which should just be a type.
> Thanks,
>
> Someone can correct me here, but I believe you can't use preprocessor
> directives (#define, #if, etc.) within a macro definition, and, well,
> who knows what'll happen if you try :/
>
> - Jeff
Right, and to address your desired use case a little more specifically,
I don't think you can store state in the preprocessor in between macro
invocations (if I'm wrong, please correct me, I would find such an
ability very useful as well).
Regards,
Nate
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