#define的一些用法


1.define的多行定义

define可以替代多行的代码,在每一个换行的时候加上一个"\"

#define MAX(X,Y) do { \

语句1; \

语句2; \

/* 注释的写法 */ \

} while(0) /* (no trailing ; ) */ \

 例子:

#define FZUserInfoReset \

[[NSUserDefaults standardUserDefaults] setObject:kDefaultUserName forKey:Key_UserName];\

[[NSUserDefaults standardUserDefaults] removeObjectForKey:Key_LoginToken];\

[[NSUserDefaults standardUserDefaults] removeObjectForKey:Key_MemberID];\

[[NSUserDefaults standardUserDefaults] removeObjectForKey:Key_HeadImage];\

[[NSUserDefaults standardUserDefaults] removeObjectForKey:Key_Gender];\

[[NSUserDefaults standardUserDefaults] removeObjectForKey:Key_NewMessage];\

[[NSUserDefaults standardUserDefaults] removeObjectForKey:Key_RoleType];\

[[NSUserDefaults standardUserDefaults] removeObjectForKey:Key_Tag];\

[[NSUserDefaults standardUserDefaults] removeObjectForKey:Key_BindingTag];\

[[NSUserDefaults standardUserDefaults] setObject:@"0" forKey:Key_UserCash];\

[[NSUserDefaults standardUserDefaults] setObject:@"0" forKey:Key_UserCredits];\

[[NSUserDefaults standardUserDefaults] setObject:@"0" forKey:Key_UserTickets]


2.在大规模的开发过程中,特别是跨平台和系统的软件里,define最重要的功能是条件编译。

#ifdef WINDOWS

......

......

#endif

#ifdef LINUX

......

......

#endif

可以在编译的时候通过#define设置编译环境


3.带参数的宏
#define 标识符(x1,x2,x3...xn) 替换列表  (注意:x1,x2,x3..是宏的参数,标识符和其左括弧之间不能有空格)
使用方法:
#define MAX(x,y) ((x)>(y)?(x):(y))
i=MAX(j+k,m-n);
替换为:
i=MAX((j+k)>(m-n)?(j+k):(m-n));
#define SI_EX(n) ((n)%2==0)
if(SI_EX(i)) i++;
替换为:
if(SI_EX((i)%2==0))
通过以上例子我们可以看出,标识符带参数(X1,X2,X3.....)在替换时会被替换列表(Y1,Y2,Y3....)对应的替换,但是和顺序无关。
例子:


#define FZUserInfoWithKey(key)\

[[NSUserDefaults standardUserDefaults] objectForKey:key]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值