您的位置:首页 > 编程语言 > C语言/C++

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

2016-11-12 00:00 127 查看
在项目开发的过程中会遇到很多的宏定义,宏定义的作用目前本人知道的有三种有法:

第一种: #define OK 1

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

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

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

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

第一次遇到这种定义的时候感觉特别奇怪,因为它没有实体,宏替换时没有具体的操作内容,可这又有什么用呢?答案是这种宏定义的作用是一种“占位”,即宏定义了一个函数,这个函数里面的参数有多少个无所谓,它告诉了编译器已经存在这个函数了,你不可以重新再定义一个和它重名的函数,否则会报错,这种定义在大型的项目中很常见,从而防止不同的程序员在作业中定义同一种函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  宏定义