使用 #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 相比如何?