define成为"宏",在C语言编程中非常重要,它在程序编译时只是在预处理的过程中实施简单的替换操作而已。由于在替换过程中可能出现的各种不安全性问题,在C++提倡采用const或者inline(内联函数)的方式替代宏。
内联函数和普通函数相比可以加快程序的运行速度,但它是以增加程序存储空间维代价的,由于不需要中断调用,在编译内联函数的时候内联函数可以直接被嵌入目标代码中。
对于短小的代码,inline可以带来一定效率的提升,且与C时代的define(宏)相比,它更安全可靠。
宏和内联函数的主要区别如下:
1.宏是代码处不加任何验证的简单替代,而内联函数是将代码直接插入调用处,而减少了普通函数调用时的资源消耗。
2.宏不是函数,只是在编译前预处理阶段将程序中有关字符串替换成宏体。
3.inline是函数,但在编译中不单独产生代码,而是将有关代码嵌入到调用处。
许多C程序员的经验表明,宏会为程序设计带来不小的安全隐患,许多由宏产生的问题就是实证。
所以在C++中引入的const关键字以及inline函数可以完成与宏同样的功能,且更安全,更可靠。
结论:逐步舍弃define,慢慢过渡到C++的标准上来。