我正在看一个定义了大量常量数组的应用程序。让我感到困惑的是在宏观中使用彼此相邻的两个磅标志。例如:
#define r0(p,q,r,s) 0x##p##q##r##s
这两个磅标志是什么意思?
答案 0 :(得分:27)
##
在宏扩展期间为 concatenate actual arguments 提供了一种方法。
答案 1 :(得分:9)
##
连接符号。例如,如果p
的值为ab
,则0x##p
将变为0xab
。
答案 2 :(得分:5)
Als和sepp2k给出了正确答案。
但是我想补充一点,这个宏似乎完全没必要。
unsigned int value = r0(b,e,a,f);
可以用更好更短的代替:
unsigned int value = 0xbeaf;