У меня есть такой макрос:
#define SHOW_EXPR(x) printf ("%s=%d\n", #x, (x))
Оно работает:
#define FOO 123
int BAR = 456;
SHOW_EXPR(FOO+BAR);
Это печатает FOO+BAR=579
, как и ожидалось.
Теперь я пытаюсь определить макрос, который вызывает SHOW_EXPR:
#define MY_SHOW_EXPR(x) (printf ("Look ma, "), SHOW_EXPR(x))
MY_SHOW_EXPR(FOO+BAR)
Это печатает Look ma, 123+BAR=579
, что также ожидается, но это не то, что я хочу.
Можно ли определить MY_SHOW_EXPR так, чтобы он работал правильно?
(Реальные макросы немного сложнее, чем показано здесь. Я знаю, что макросы — это зло.)
Look ma, FOO+BAR=579
было бы неплохо ;) - person n. 1.8e9-where's-my-share m.   schedule 09.12.2011