现在的位置: 首页 > 综合 > 正文

[C++]尽量以const,enum,inline替换#define

2014年03月12日 ⁄ 综合 ⁄ 共 772字 ⁄ 字号 评论关闭

尽量以constenuminline替换#define

-----MoaKap学习笔记

l  对于单纯常量,最好以const对象或enum替换#define

#define MAX 100

当使用#define定义一个常量时,由于常量MAX在进入编译器前已经被替换成#define定义的数值100,这样MAX本身便没有进入记号表。当程序在MAX附近出错时,编译器的错误信息就会是关于100的错误。如果其它人来阅读这个信息,将会完全不知道100从何而来。原因就是MAX并没有进入编译器的记号表。

使用常量替换#define

Const int Max = 100

这样,作为一个常量,Max肯定会进入编译器的记号表,就不会出现像“100有错误“类型的错误信息了。

同时,使用const常量还可以避免目标码的多份复制。在程序中,仅有一个内存来存放常量。

注:

1、  关于指针常量

因为常量通常被放在头文件中,因此有必要将指针声明为const(而不只是指针所指的对象),因此必须写为:

Const char * const User_Name = “Demo”;

Const指针:如果const出现在*左边,表示被指物为常量;如果出现在*右边,表示指针自身是常量;如果出现在*两边,表示指针和被指物都是常量。

如果被指物是常量,也可以将const写在类型之后、*之前。以下两种写法是等价的:

Void f1(const char * pw);

Void f2(char const * pw);

2、  const修饰函数返回值

令函数返回一个常量值,可以降低因用户错误操作造成的意外,而又不至于放弃安全性和高效性。

例如:

定义函数Const int func();

这样,当用户出现如 if( func() = a) 的判断时,程序就会报错。

 

l  对于形似函数的宏,最好改用inline函数替换#define

*——Effective C++

 

【上篇】
【下篇】

抱歉!评论已关闭.