【发布时间】:2013-11-06 02:34:08
【问题描述】:
使用#define 优于 const 有哪些优点和缺点(反之亦然)?
当我读到关于糟糕的编程实践,特别是幻数时,我发现自己更频繁地使用#define。一些问题突然出现在我的脑海中,例如:
经常使用#define 是不是很糟糕?
是否占用内存空间?
改用 const 会更快吗?
我读过一些关于这个的信息,但我仍然不确定,根据我的理解:
#define 定义了一个宏(不确定宏是什么意思),它处理预处理。在处理代码之前,它会将已定义关键字的所有实例替换为其他内容。另一方面, const 是变量,其值不能在运行时中途更改。
我能想到使用 const 的唯一原因是该值是否依赖于其他变量。例如:
#define PI 3.14159f
#define RADIUS 3.0f
#define AREAOFCIRCLE PI*RADIUS*RADIUS
效率会很低,因为 AREAOFCIRCLE 的每个实例都将被 PI*RADIUS*RADIUS 替换,因此程序会在您每次使用 AREAOFCIRCLE 时为其计算。另一方面:
const float areaofcircle = PI*RADIUS*RADIUS;
会更有效,因为程序只会计算一次。
那么回到最初的问题,#define 与 const 相比如何?
【问题讨论】:
-
我已经读过,但我对任何答案都不满意
-
经常使用
#define不好吗?尽量不要使用它! -
constexpr 怎么样?
标签: c++ constants c-preprocessor