我有这#define
语句在遗留代码我正在检查C。奇怪的#define声明,无法理解它扩展的内容
#define STEP(x) case x: STEP ## x : WPAN_Startup_Step = x;
这是一个在很大的交换机状态机中替换个案的宏。 我无法理解这个宏中发生了什么。它扩展到了什么?
我有这#define
语句在遗留代码我正在检查C。奇怪的#define声明,无法理解它扩展的内容
#define STEP(x) case x: STEP ## x : WPAN_Startup_Step = x;
这是一个在很大的交换机状态机中替换个案的宏。 我无法理解这个宏中发生了什么。它扩展到了什么?
##
做了拼接,这意味着其结果将是这样的:
STEP(1)
case 1: STEP1: WPAN_Startup_Step = 1;
或另外一个例子:
STEP(v)
case v: STEPv: WPAN_Startup_Step = v;
该宏不做出太大的意义对我来说,因为它会生成x: STEPx:
也许一个用法示例会澄清这一点。
,如果你想看到宏使用的扩展:gcc -E program.c
也是一个很好的地方,了解宏:http://gcc.gnu.org/onlinedocs/cpp/Macros.html
除了步骤(x),有一个'#定义STEP'地方? – Chowlett