C语言特殊宏定义的使用

1、#

#是将字母变成字符串的宏定义

用法:

#define  N(a) #a

printf("%s",N(fdaf));

输出为fdaf。不可能做到将一个变量通过这个操作变成字符串(比如int a =5,不能N(a)得到“5”,得到的只是“a”),但是宏定义的常量可以。需要一个中间宏如下:

#define  N(a) _N(a)
#define _N(a) #a
#define  C   3
printf("%s",N(C));

输出是3,如果不用中间宏输出是C。

2、##

##是将两个字符串拼接在一起的宏定义

用法:

#define  C(s1,s2) s1##s2
printf("%s","fda","134");

输出为fda134。同样不能通过这个宏将两个变量粘贴在一起(比如char *a="fad";char*b+"41";C(a,b),得到的只是“ab”),同样可以将宏定义的常亮粘贴在一起。同样使用中间宏:

#define  C(s1,s2) _C(s1,s2)
#define _C(s1,s2) s1##s2
#define A  "fda"
#define B  "431"
printf("%s",C(A,B));
输出为fda431,如果不用直接报错。
 

3、#@

#@不是gcc支持的语法不介绍。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值