关于C/C++中宏定义的一些新认识

喜你入骨 提交于 2020-03-02 08:23:04

在项目开发的过程中会遇到很多的宏定义,宏定义的作用目前本人知道的有三种有法:

 

第一种: #define OK 1 

        这种用法可以直接了当的表明代码的用意,从而防止“魔数”的出现,恰当的宏定义一些常量值可以有效的增加代码的可读性。

第二种: #define MAX(a, b) ( (a) > (b) ? (a) : (b) )

        这种宏定义函数的方法可以使代码变得更简洁,而且可以提高代码的执行效率,我们知道程序在调用宏定义时,是在代码执行时宏定义的地方直接进行替换,所以不会像调用函数那样进行压栈,让PC指针跳转另一块内存区域,从而使执行效率提高。在编译器的头文件中也有很多类似于这种方式的宏定义,只不过函数的实体是单独提取出来的。

第三种:#define function(...)

        第一次遇到这种定义的时候感觉特别奇怪,因为它没有实体,宏替换时没有具体的操作内容,可这又有什么用呢?答案是这种宏定义的作用是一种“占位”,即宏定义了一个函数,这个函数里面的参数有多少个无所谓,它告诉了编译器已经存在这个函数了,你不可以重新再定义一个和它重名的函数,否则会报错,这种定义在大型的项目中很常见,从而防止不同的程序员在作业中定义同一种函数。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!