C中##预处理器的用途是什么?

Hem*_*nth 2 c

可能重复:
C预处理器和连接

任何人都能用例子解释一下吗?

jpa*_*cek 8

它允许从他们的部分构造标识符.例如:

#define CLASS_NAME(name) CLASS__ ## name
Run Code Online (Sandbox Code Playgroud)

会扩大CLASS_NAME(alpha)CLASS__alpha.它广泛用于boost预处理器库使用的技巧,例如.

#define IF0(a, b) b
#define IF1(a, b) a
#define IF(cond, a, b) IF ## cond(a, b)
Run Code Online (Sandbox Code Playgroud)

这将扩大IF(0, a, b)aIF(1, a, b)b.此外,有时,它用于生成结构和函数名称(类似于c ++模板).