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