Это немного обходится, но вы можете сделать что-то вроде этого:
(предположим, для примера, что у вас есть три возможных значения enum enum_one
, enum_two
и enum_three
).
#define enum_func_one enum_one
#define enum_func_two enum_two
#define enum_func_three enum_three
#define f2e(func_name) enum_ ## func_name
недостаток (конечно) в том, что вам понадобится специальный #define для каждого возможного значения вашего перечисления.
Alternative
В качестве альтернативы, если вам нужно только иметь удобное имя функции, чтобы вы могли использовать функцию "перехода к определению" в вашей среде IDE ... вы можете сделать что-то вроде этого:
#define f2e(name, func_name) enum_ ## name
тогда ваш звонок будет выглядеть так:
foo (param, f2e(one, func_one));
возможно, немного избыточно, но это достигнет вашей цели с минимальным вмешательством в остальную часть вашего кода.