在glibc中发现有这种用法
#define GLRO(x) _##x
后查询发现,原来是连接字符用的,和他相似的还有“#”和“#@”
1.“#”的用法
#就是表示后面的是个表示符是个字符串,例如
#define str(a) #a
print(str(abc)); ==> print(“abc”)
2.“#@”的用法
#@就是表示后面的是个表示符是个字符,例如
#define chr(a) #@a
put(chr(a)); ==>put('a')
注意:仅对参数中最后的单一标记转换有效
put(chr(abc)); ==>put('c')
2.“##”的用法
##就是表示连接表示符,例如
#define str(a) c_##a
char *str(1)= "abc"; ==>char *c_1="abc";
如果在后面连接就在后面加##
#define str(a) a##_1;
char *str(a)= "abc"; ==>char *a_1="abc";