【发布时间】:2011-12-09 12:26:34
【问题描述】:
我有一个这样的宏:
#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 以使其做正确的事情?
(实际的宏比这里显示的要复杂一些。我知道宏是邪恶的。)
【问题讨论】:
-
@Steve Jessop:
Look ma, FOO+BAR=579这样的东西会很好 ;)
标签: c macros c-preprocessor variadic-macros stringification