使用 #define 和 const 有哪些优缺点?(反之亦然)当我阅读关于编程中的坏习惯,特别是魔法数字时,我发现自己更频繁地使用 #define。一些问题浮现在我的脑海中,比如:经常使用 #define 是否不好?它会占用内存空间吗?使用 const 会更快吗?
我已经阅读了一些关于这个问题的资料,但还不确定。据我所了解: #define 定义了一个宏(不确定宏的含义),与预处理相关。在代码被处理之前,它将定义关键字的所有实例替换为其他内容。而 const 则是一个变量,其值在运行时期间无法更改。
我能想到使用 const 的唯一原因是如果该值依赖于其他变量。例如:
我已经阅读了一些关于这个问题的资料,但还不确定。据我所了解: #define 定义了一个宏(不确定宏的含义),与预处理相关。在代码被处理之前,它将定义关键字的所有实例替换为其他内容。而 const 则是一个变量,其值在运行时期间无法更改。
我能想到使用 const 的唯一原因是如果该值依赖于其他变量。例如:
#define PI 3.14159f
#define RADIUS 3.0f
#define AREAOFCIRCLE PI*RADIUS*RADIUS
如果每次使用AREAOFCIRCLE时,程序都要计算PI*RADIUS*RADIUS,那么效率会很低。相反:
const float areaofcircle = PI*RADIUS*RADIUS;
如果程序只计算一次,那么使用#define可能更有效率。
回到最初的问题,#define和const有什么区别?
#define
是不好的吗?尽量不要使用它! - David Heffernan