effective C++ 2_尽量以const,enum,inline替换#define 的学习

来源:互联网 发布:crm软件排名 编辑:程序博客网 时间:2024/06/08 15:02

本篇作者强调 “宁可以编译器替换预处理器”. 因为预处理器会先于编译器使用。
从C语言继承来的宏,在预处理阶段会被替换掉。 那么到了编译阶段,使用宏的时候的记号名称有可能没有进入记号表内。
而const, inline,enum可以获得宏带来的效率,以及类型安全性等。
1. 作者介绍了enum hack技术:

class GamPlayer {private:    enum { NumTurns = 5 };  //"the enum hack"    int scores[NumTurns];    ...    };

这种技术我在leveldb的源码中也见到过。

阅读全文
0 0