宏初识

来源:互联网 发布:c 数字图像处理算法 编辑:程序博客网 时间:2024/06/08 02:34

我现在学东西仍停留在知其然而不知其所以然的阶段,工作催赶着要优先得到结果,而不关心实现过程。最好就是能直接在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'
原创粉丝点击