c preprocessor - How to store a macro in another macro? -


i have macro ddlogdebug(...) , following

#define _ddlogdebug(arg...) ddlogdebug(args) #undef ddlogdebug #define ddlogdebug(args...) dosomething(); _ddlogdebug(arg...) 

but not work. instead of #define _ddlogdebug(arg...) ddlogdebug(args), need command "stores" content of macro ddlogdebug _ddlogdebug.

  • does exist?

  • how should 1 when 1 wants modify macro definition not exposed?

you can't purely standard preprocessor.

the reason macro definition doesn't work e.g. function definition in main language: @ time when define _ddlogdebug, isn't linking definition of ddlogdebug - it's storing exactly wrote. won't attempt find expansion names until macro being used in program outside of definitions. point, definition ddlogdebug gone.

this valuable , intended behaviour, because allows use of techniques x-macros: 1 definition can provide framework , let different calling contexts decide how use in different ways. not outer macro not dependent on definitions available @ time written, meaning of contents can change throughout program without having change structure.

if can't work around problem, might have luck non-standard widely-supported push_macro , pop_macro directives.


example of use of push , pop:

#define foo 123 #pragma push_macro("foo") #undef foo foo #pragma pop_macro("foo") foo 

run through gcc -e , you'll see emits foo (newline) 123. works clang.


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -