Как я могу получить название макрофункции?

0

У меня есть макрос:

#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)

Но этот способ плохой, потому что я должен определить макросы для всех возможных макрофункций. Идеи?

  • 6
    Это звучит как вопрос XY. Что вы на самом деле пытаетесь решить?
Теги:
c-preprocessor

1 ответ

0

Вы можете сделать это так, но я не рекомендую. Например, напечатайте имя функции.

#define MYMACRO(func, ...) \
   (printf("%s\n", #func), func(__VA_ARGS__))

И использовать его таким образом

MYMACRO(mypred, 1, 2);

или

int a = MYMACRO(pred, 1, 2);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню