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