宏初识

我现在学东西仍停留在知其然而不知其所以然的阶段,工作催赶着要优先得到结果,而不关心实现过程。最好就是能直接在Github上找到合适的代码粘过来用。这样做的缺点很明显,就像搬砖的工人,只能有一些工程经验,也许能保证东西好用,但美丑就不再控制范围内了。自己的孩子不听自己的话让人无可奈何的懊恼,希望未来有一天能知其所以然,成为算法设计师。

这里总结一点关于宏的小经验,未来再学习为什么宏要这样用:

1.取代Magic Number,程序中有意义的常量可以用宏代替。(为什么不是Global?)

2.防止重定义(#ifndef…else…#endif)

3.编译宏(在某些系统下,可以把宏定义传递给编译器,目前没有遇到)

4.应尽量避免使用宏函数(极容易出现难以预料的问题)

5.宏函数(用于简化操作,前提是展开前后代码量相差不大,即很小的函数,可以看做是用于代码生成)

6.效率方面,宏函数>内联函数>普通函数(但是一定不要因为效率问题使用宏,付出的代价很高)

7.某些时候可以做一些函数不能做的事:

#define  fun(dst, src)  strcpy(dst, #src)
//fun(buff,abc) 相当于 strcpy(buff,“abc”)

#define fun(arg)    my##arg
//fun(ABC)  相当于 myABC

#define fun(a,b)    a=#@b
//fun(x,y)  相当于 x='y'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值