这是什么“#define CONCAT_3(p1,p2,p3)p1 ## p2 ## p3”宏定义是什么意思?

问题描述:

我已经看过一个带参数的宏,但这是相当新的。这是什么“#define CONCAT_3(p1,p2,p3)p1 ## p2 ## p3”宏定义是什么意思?

我无法理解它会返回什么以及它如何工作?

+0

'##'是c中的连接运算符。它用于连接c预处理器中的两个宏。 – rsp

##是预处理器级联运算符。

它将参数连接在一起。

因此CONCAT_3(foo, bar, foobar)将产生foobarfoobar