我有宏:
#define MYMACRO(pred, ...) \
pred /* here 'pred' is 'mypred(1, 2)', but I need to get only the name without args */
使用方法如下:
MYMACRO(mypred(1, 2))
我只需要获取宏函数的名称,不带参数。
我可以这样做:
#define mypred(...) \
mypred
#define MYMACRO_EXPAND(pred) \
pred /* here 'pred' is 'mypred' without args */
#define MYMACRO(pred, ...) \
MYMACRO_EXPAND(pred)
但这种方式很糟糕,因为我应该为所有可能的宏函数定义宏。 想法?
答案 0 :(得分:0)
你可以这样做,但我不建议。 例如,打印函数名称。
#define MYMACRO(func, ...) \
(printf("%s\n", #func), func(__VA_ARGS__))
并以这种方式使用
MYMACRO(mypred, 1, 2);
或
int a = MYMACRO(pred, 1, 2);