concat宏浅析

concat 是一个常见的宏编程技术,用于将两个或多个预处理器标记(通常是宏参数或宏定义)连接(concatenate)成一个单一的标记, 通常通过使用预处理器的 ## 操作符实现,该操作符用于连接两个标记。

`Concat`宏的基本用法

假设有一个 concat 宏定义如下:

1
#define concat(a, b) a ## b

这里,## 操作符会将它的两个参数 a 和 b 连接成一个单一的标记。

示例

使用 concat 来动态创建函数名:

1
2
3
4
5
6
7
8
9
10
11
12
#define concat(a, b) a ## b

// 定义一个示例函数
void func123() {
// 函数体
}

int main() {
// 调用 concat 宏来连接 'func' 和 '123',生成函数名 'func123'
concat(func, 123)();
return 0;
}

在这个例子中,concat(func, 123) 会在预处理阶段被展开为 func123,因此 concat(func, 123)(); 实际上调用的是 func123()函数。