C 阅读Zend引擎API代码:###(双哈希)是什么意思?

C 阅读Zend引擎API代码:###(双哈希)是什么意思?,c,php-internals,C,Php Internals,出于好奇,我正在阅读Zend Engine API代码,在它们的define中遇到了很多。例如,在/usr/lib/php5/Zend/Zend_API.h: #define ZEND_FN(name) zif_##name #define ZEND_MN(name) zim_##name 这两行中的###(双哈希)符号是什么意思?这个##符号将##前面的内容与后面的内容连接起来。因此,在您的示例中,执行ZEND\u FN(foo)将导致zif\u foo回送RvV的答案 请注意,在连接文字字

出于好奇,我正在阅读Zend Engine API代码,在它们的define中遇到了很多。例如,在/usr/lib/php5/Zend/Zend_API.h:

#define ZEND_FN(name) zif_##name
#define ZEND_MN(name) zim_##name
这两行中的###(双哈希)符号是什么意思?

这个##符号将##前面的内容与后面的内容连接起来。因此,在您的示例中,执行
ZEND\u FN(foo)
将导致
zif\u foo

回送RvV的答案

请注意,在连接文字字符串时,可能会发现预处理器/编译器之间存在一些不一致。有些将需要##

而另一个将对此束手无策,而只是要求编译器将两个文本连接起来(与预处理器相反),因此需要

#define STR_CAT(s1, s2)   s1 s2

const char s[] = STR_CAT("concat", "enation")
#define STR_CAT(s1, s2)   s1 s2