#define 标识符 标记序号
#undef 未知标识符
给顶下列定义:
#define cat(x, y) x##y
宏调用cat(var, 123)将生成var 123, 但宏调用cat(cat(1, 2), 3)没有定义: ##阻止了外层调用的扩展,产生cat(1, 2)3, )3不是一个合法的记号, 采用下列定义可实现二层宏定义:#define xcat(x, y) cat(x, y), xcat(cat(1, 2), 3)将生成123
本文探讨了C语言中预处理宏的高级用法,特别是如何通过定义特定宏解决多层宏调用的问题。文中详细解释了使用双层宏定义技巧来避免##操作符带来的扩展障碍,使读者能够更好地理解并运用这一特性。
#define 标识符 标记序号
#undef 未知标识符
给顶下列定义:
#define cat(x, y) x##y
宏调用cat(var, 123)将生成var 123, 但宏调用cat(cat(1, 2), 3)没有定义: ##阻止了外层调用的扩展,产生cat(1, 2)3, )3不是一个合法的记号, 采用下列定义可实现二层宏定义:#define xcat(x, y) cat(x, y), xcat(cat(1, 2), 3)将生成123

被折叠的 条评论
为什么被折叠?