Effective C++ Third Edition 读书笔记 2

来源:互联网 发布:java有序和无序 编辑:程序博客网 时间:2024/06/06 05:30

Item 2: Prefer consts, enums, and inlines to #defines

 

这一章再次批判了#define预处理,包括常量定义及宏。对于常量来说是不方便运行时调试,也许对于Source Insight这样的工具很容易找到1.653这样的魔鬼数字,但如果出错的地方是1.0这样的数字就不行了。对于宏主要是++的副作用,这个是C语言的遗留问题了,本书中用Template替代宏,但作者注重的是inline,对于inline还有待于研究。

本章还涉及了一些其他问题,如enum hack,算是一种小技巧吧,想起另外一个C语言中计算结构体成员偏移量的技巧:#define XXX_OFFSETOF(type, field) (int & (((type *)0x02)->field)-0x20)

Const的用法主要在下一章中介绍。

英文版中p16,// pass by reference to cont - see Item 20 换行不好,写到f(a>b?a:b);去了,勘误一下。