出于好奇,我正在阅读Zend Engine API代码并在#define中遇到了相当多的##.例如,在/usr/lib/php5/Zend/zend_API.h:
#define ZEND_FN(name) zif_##name
#define ZEND_MN(name) zim_##name
Run Code Online (Sandbox Code Playgroud)
##(双哈希)符号在这两行中意味着什么?
Echo RvV的回答.
请注意,在连接文字字符串时,您可能会发现预处理器/编译器之间存在一些不一致.有些人需要##
#define STR_CAT(s1, s2) s1 ## s2
Run Code Online (Sandbox Code Playgroud)
如在
const char s[] = STR_CAT("concat", "enation")
Run Code Online (Sandbox Code Playgroud)
而其他人会对它抱怨,而只是要求编译器加入两个文字(而不是预处理器),因此需要
#define STR_CAT(s1, s2) s1 s2
Run Code Online (Sandbox Code Playgroud)
HTH
| 归档时间: |
|
| 查看次数: |
9305 次 |
| 最近记录: |