【发布时间】:2010-12-08 11:52:24
【问题描述】:
我想创建一个 C 宏来创建一个基于名称的函数 行号上。 我想我可以做类似的事情(真正的函数会在大括号内声明):
#define UNIQUE static void Unique_##__LINE__(void) {}
我希望可以扩展为:
static void Unique_23(void) {}
这行不通。使用令牌连接,定位宏 被逐字处理,最终扩展为:
static void Unique___LINE__(void) {}
这样可以吗?
【问题讨论】:
-
我认为您可以使用 indirect macro expansion。
-
How to concatenate twice with the C preprocessor and expand a macro as in "arg ## _ ## MACRO"? 的可能副本 除了
__LINE__之外的任何宏都是如此(尽管这是一个常见的用例。
标签: c macros concatenation token