macro inside enum c++ -


i need write functions this:

void foo() {     //some details } enum fun_names {     fun_name_foo, }; 

so made 2 macros:

#define make_fun(fun) void fun(){} #define add_fun(fun) fun_name_##fun, 

then use them this:

make_fun(foo) make_fun(bar) enum fun_names {     add_fun(foo)     add_fun(bar) }; 

but can see, i'm repeating 2 macros same arguments. possible make 1 single macro this?

create_fun(foo) create_fun(bar) 

this saves lines of codes , less error-prone.

a possible trick might have macro taking macro name argument

#define do_enum(mac) \   mac(foo) \   mac(bar) 

then

#define declare_enum(x) x, enum fun_names {   nothing,   do_enum(declare_enum) }; #undef declare_enum 

and declare functions:

#define declare_fun(x) void myfun_##x(void); do_enum(declare_fun) #undef declare_fun 

and on.

another way might generate specialized header files, e.g. using awk script, file containing list of functions etc..


Comments