Effective C++ Item 02-尽量以const、enum、inline替换#define

来源:互联网 发布:科勒有几家网络授权店 编辑:程序博客网 时间:2024/05/18 03:11

Item 02: 尽量以const、enum、inline替换#define(Prefer consts,enums,and inlines to #define)


即以编译器替换预处理器,因为#define不被视为语言的一部分。


Ex: #define ASPECT_RATIO        1.653

ASPECT_RATIO也许没有被编译器看见,于是未进入记号表(symbol table)造成编译错误,而这个错误会提到1.653但不是ASPECT_RATIO,查找起来很困难。

解决办法:const double AspectRatio = 1.653


const替换#define

1、常量指针:const char* const authorName = ...

2、class:    static 确保该常量只有一份实体

class GamePlayer{

private:

static const int NumTurns = 5;

int scores[NumTurns];

}


Note:有了const、enum、inline,我们对#define的需求降低了,但并非完全消除,#include仍是必需品,#ifdef/#ifndef可以控制编译    的重要角色。

对于单纯常量,最好用const对象或enums替换#defines

对于形似函数的宏(macros),最好改用inline函数替换#defines



0 0
原创粉丝点击