在项目开发的过程中会遇到很多的宏定义,宏定义的作用目前本人知道的有三种有法:
第一种: #define OK 1
这种用法可以直接了当的表明代码的用意,从而防止“魔数”的出现,恰当的宏定义一些常量值可以有效的增加代码的可读性。
第二种: #define MAX(a, b) ( (a) > (b) ? (a) : (b) )
这种宏定义函数的方法可以使代码变得更简洁,而且可以提高代码的执行效率,我们知道程序在调用宏定义时,是在代码执行时宏定义的地方直接进行替换,所以不会像调用函数那样进行压栈,让PC指针跳转另一块内存区域,从而使执行效率提高。在编译器的头文件中也有很多类似于这种方式的宏定义,只不过函数的实体是单独提取出来的。
第三种:#define function(...)
第一次遇到这种定义的时候感觉特别奇怪,因为它没有实体,宏替换时没有具体的操作内容,可这又有什么用呢?答案是这种宏定义的作用是一种“占位”,即宏定义了一个函数,这个函数里面的参数有多少个无所谓,它告诉了编译器已经存在这个函数了,你不可以重新再定义一个和它重名的函数,否则会报错,这种定义在大型的项目中很常见,从而防止不同的程序员在作业中定义同一种函数。
来源:oschina
链接:https://my.oschina.net/u/1032782/blog/786778