我在遗留代码中有#define
声明,我正在 C 进行检查。
#define STEP(x) case x: STEP ## x : WPAN_Startup_Step = x;
这是一个用于替换非常大的交换机状态机中的情况的宏。 我无法理解这个宏发生了什么。它扩展到什么?
答案 0 :(得分:3)
##
进行连接,这意味着结果将是这样的:
STEP(1)
case 1: STEP1: WPAN_Startup_Step = 1;
或其他例子:
STEP(v)
case v: STEPv: WPAN_Startup_Step = v;
这个宏对我来说没有多大意义,因为它会生成x: STEPx:
也许用例可以澄清这一点。
如果您想查看宏使用的扩展:gcc -E program.c