您的位置:首页 > 编程语言 > C语言/C++

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

2007-10-30 16:27 357 查看
尽量以const,enum,inline替换#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++
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: