关于C/C++中宏定义的一些新认识
2016-11-12 00:00
127 查看
在项目开发的过程中会遇到很多的宏定义,宏定义的作用目前本人知道的有三种有法:
第一种: #define OK 1
这种用法可以直接了当的表明代码的用意,从而防止“魔数”的出现,恰当的宏定义一些常量值可以有效的增加代码的可读性。
第二种: #define MAX(a, b) ( (a) > (b) ? (a) : (b) )
这种宏定义函数的方法可以使代码变得更简洁,而且可以提高代码的执行效率,我们知道程序在调用宏定义时,是在代码执行时宏定义的地方直接进行替换,所以不会像调用函数那样进行压栈,让PC指针跳转另一块内存区域,从而使执行效率提高。在编译器的头文件中也有很多类似于这种方式的宏定义,只不过函数的实体是单独提取出来的。
第三种:#define function(...)
第一次遇到这种定义的时候感觉特别奇怪,因为它没有实体,宏替换时没有具体的操作内容,可这又有什么用呢?答案是这种宏定义的作用是一种“占位”,即宏定义了一个函数,这个函数里面的参数有多少个无所谓,它告诉了编译器已经存在这个函数了,你不可以重新再定义一个和它重名的函数,否则会报错,这种定义在大型的项目中很常见,从而防止不同的程序员在作业中定义同一种函数。
第一种: #define OK 1
这种用法可以直接了当的表明代码的用意,从而防止“魔数”的出现,恰当的宏定义一些常量值可以有效的增加代码的可读性。
第二种: #define MAX(a, b) ( (a) > (b) ? (a) : (b) )
这种宏定义函数的方法可以使代码变得更简洁,而且可以提高代码的执行效率,我们知道程序在调用宏定义时,是在代码执行时宏定义的地方直接进行替换,所以不会像调用函数那样进行压栈,让PC指针跳转另一块内存区域,从而使执行效率提高。在编译器的头文件中也有很多类似于这种方式的宏定义,只不过函数的实体是单独提取出来的。
第三种:#define function(...)
第一次遇到这种定义的时候感觉特别奇怪,因为它没有实体,宏替换时没有具体的操作内容,可这又有什么用呢?答案是这种宏定义的作用是一种“占位”,即宏定义了一个函数,这个函数里面的参数有多少个无所谓,它告诉了编译器已经存在这个函数了,你不可以重新再定义一个和它重名的函数,否则会报错,这种定义在大型的项目中很常见,从而防止不同的程序员在作业中定义同一种函数。
相关文章推荐
- 关于c++的一些自我认识(1)
- 关于c++的一些自我认识(3)
- 关于C++工程 vcproj文件的的一些认识
- 关于c++的一些自我认识(2)
- 关于c++的一些自我认识(4)
- 关于Borland C++BuilderX的一些问题的回答
- 关于winpcap的一些认识
- 关于编码的一些认识和理解(Kemin原创)
- 关于C++泛型编程的一些杂感
- 关于C++的一些细节[四:循环,分支语句,关系表达式,关系运算符]
- 关于构造函数的一些新的认识
- 关于COM的一些浅显的认识(读书笔记)
- 关于C++的一些细节[三:复合类型]
- 关于U盘免疫的一些自我认识
- 关于c++的一些注意事项
- 关于Borland C++BuilderX的一些问题的回答
- 关于C++泛型编程的一些杂感
- 关于C/C++程序的一些规范(2005-5-10)
- 关于C++的一些细节[二:简单变量]
- 关于C++文件读写的一些东西