奇怪的#define声明,无法理解它扩展的内容
我在 C 中检查的遗留代码中有这个 #define
语句。
#define STEP(x) case x: STEP ## x : WPAN_Startup_Step = x;
这是一个宏,用于替换非常大的开关状态机中的情况。 我无法理解这个宏中发生了什么。它扩展到什么?
I have this #define
statement in legacy code I'm inspecting in C.
#define STEP(x) case x: STEP ## x : WPAN_Startup_Step = x;
This is a macro to replace cases in a very big switch state machine.
I can't understand what's going on in this macro. What does it expand to ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
##
进行串联,这意味着结果将类似于:或另一个示例:
这个宏对我来说没有多大意义,因为它生成
x: STEPx:< /代码>
也许一个使用示例可以澄清这一点。
如果您想查看宏的扩展,请使用:
gcc -E program.c
也是了解宏的好地方:http://gcc.gnu.org/onlinedocs/cpp/Macros.html
##
does a concatenation, this means that the result will be something like this:or another example:
this macro does not make to much sense to me, since it generates
x: STEPx:
maybe a usage example would clarify this.
if you want to see the expansion of a macro use:
gcc -E program.c
also a good place to learn about macros: http://gcc.gnu.org/onlinedocs/cpp/Macros.html