#define中#和##的涵义

详解一:

在define的指令格式中,#为Stringizing Operator,意思是把形参转化为字符串,如上面的例子: 

#define   paster(n)
printf("token "#n" = %d", token##n)

#n即转化为了 "n ",它与前面的标志符和后面的标志符之间的空格将被忽略. 


##为Token-Pasting Operator,在define指令中,它可以把两个token连接在一起. 
例如: 
#define link(a,b)  a##b 

则link(abc,def)   被编译器预编译之后就为abcdef. 


详解二:

其中#define语句中的#是把参数字符串化,##是连接两个参数成为一个整体。
#define FACTORY_REF(name) { #name, Make##name }
中#name就是将传入的name进行字符串化,Make##name就是将Make跟name进行连接,使它们成为一个整体。

语句

FACTORY_REF(MP3Decoder)
的意思是:
{“MP3Decoder”, MakeMP3Decoder}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值