标签:style blog class code int string
此为C语言的基础,和Linux内核关系并不大,不过还是作为补充知识点介绍一下好了。宏非常频繁的用于执行简单的计算,比如在两个表达式中寻找其中较大的一个:
#define MAX(a,b) ((a)>(b)?(a):(b))
如果使用函数来实现的话就比较慢,宏的话在编译的时候就完成工作,所以使用宏远比使用函数调用效率来的可观。和使用函数相比,使用宏的不利之处就在于每次使用宏的时候,一个宏定义代码的拷贝就插入到程序中,这样会增加程序的长度。除非非常的短,否则使用宏可能大幅增加程序的长度。
1.宏的副作用,就拿上面MAX举例
#define MAX(a,b) ((a)>(b)?(a):(b)) int x=5; int y=8; int z=MAX(x++,y++) printf("%d %d %d\n",x,y,z);
和往常一样,只要检查一下宏替换代码如下:
z=((x++)>(y++)?(x++):(y++));较大的数会增加两次哎!
2.#define需要注意的地方
如果stuff比较长,每行的末尾要加上\。
#define DEBUG_PRINT printf("string:%s," "x=%d,y=%d,z=%d", "hello",x,y,z) int main() { int x=1,y=2,z=3; DEBUG_PRINT; return 0; }
标签:style blog class code int string
原文地址:http://blog.csdn.net/getnextwindow/article/details/25032723