У меня есть такой макрос:
#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 так, чтобыон делает правильные вещи?
(Действительные макросы немного сложнее, чем показано здесь. Я знаю, что макросы - это зло.)