“#”的作用
将其后面的宏参数进行字符串化操作
remark:内部宏不会展开,若要使内部宏生效,需定义中间宏
“##”的作用
符号拼接
“#@”的作用
将宏参数转换为字符
示例代码
#define STRING(x) #x
#define MAKECHAR(x) #@x
#define _STRING(x) STRING(x)
#define PASTER(n) token##n
int main(int agrc,char** agrv)
{
char* pTest = STRING(hello);
char p = MAKECHAR(b);
char* strFile = STRING(__FILE__);
char* strFile1 = _STRING(__FILE__);
printf("%s,%d\r\n",pTest,p);
printf("%s\r\n",strFile);
printf("%s\r\n",strFile1);
int token10 = 199;
printf("%d\r\n",PASTER(10));
}
输出结果:
hello,96
__FILE__
D:\test.cpp
199