《Effective C++读书笔记》--条款02尽量以const,enum,inline替换#define

来源:互联网 发布:评论系统源码 编辑:程序博客网 时间:2024/06/08 19:34

使用宏定义是一个不被推荐的做法,在阅读了书籍并且结合自身所读过的博客,总结以下两点不推荐使用宏定义的理由。

--1、宏定义是简单的字符串替换:
由于宏定义只是进行简单的字符串替换,因此有可能会造成意想不到的情况。典型的一个例子就是#define x+x 2x,当我们使用2x*2x时,我们的意图是得到(x+x)*(x+x),即4x,但实际上由于字符串替换 2x*2x相当于x+x*x+x=x+x^2+x=x^2+2x,违背了我们原本的意图,像这样的情况有时候很难检查出来。


--2、宁以编译器替换预处理器:

对于宏定义的记号,例如#define π 3.14,记号π从未被编译器看见,于是当运用此常量但获得一个编译错误信息时,你可能感觉困惑,无法准确定位问题到底出现在哪里。


阅读全文
0 0