编写高质量代码-改善C++程序的150个建议-5
最近从图书馆借了《编写高质量代码-改善C++程序的150个建议》这本书。感觉不错,将内容摘录出来,纪录自己学习点滴。也喜欢与大家共同分享。
另外,我也找到了高清pdf。 已上传到我的资源里了。
下面是下载链接。点我进入下载页面。
欢迎各位读后分享自己的学习经验。
C语言宏因为缺少必要的类型检查,通常被C++程序员认为是“万恶之首”,但就像硬币的两面一样,任何事物都是利与弊的矛盾混合体,宏也不例外。宏的强大作用在于在编译期自动地为我们产生代码。如果说模板可以通过类型替换来为我们产生类型层面上多样的代码,那么宏就可以通过符号替换在符号层面上产生的多样代码。正确合理地使用宏,可以有效地提高代码的可读性,减少代码的维护成本。
不过,宏的使用中存在着诸多的陷阱,如果不注意,宏就有可能真的变成C++代码的“万恶之首”。
(1)用宏定义表达式时,要使用完备的括号。
由于宏只是简单的字符替换,宏的参数如果是复合结构,那么替换之后要是不用括号保护各个宏参数,可能会由于各个参数之间的操作符优先级高于单个参数内部各部分之间相互作用的操作符优先级,而产生意想不到的情形。但并不是使用了括号就一定能避免出错,我们需要完备的括号去完备地保护宏参数。
如下代码片段所定义的宏要实现参数a和参数b的求和,但是这三种定义都存在一定风险:
#define CLEAR_CUBE_VALUE( l, w, h )\ {\ l = 0;\ w = 0;\ h = 0;\ }请记住:
正确合理使用C语言中的宏,能有效地增强代码的可读性。但是也要遵守一定的规则,避免踏入其中的陷阱:(1)用宏定义表达式时,要使用完备的括号。(2)使用宏时,不允许参数发生变化。(3)用大括号将宏所定义的多条表达式包括起来。