#define是一个预处理指令。#define宏定义定义的数据经过预处理,以便您的整个代码可以使用它。这可以释放空间并增加编译时间。
const变量被认为是变量,而不是宏定义。
长话短说:CONST由编译器处理,而#DEFINE由预处理器处理。
const 相对于#define的最大优势是类型检查。#defines 无法进行类型检查,因此在尝试确定数据类型时可能会导致问题。相反,如果变量是常量,那么我们可以获取存储在该常量变量中的数据类型。
由于const 被认为是 variables,我们可以在它们上使用指针。这意味着除了更改数据本身之外,我们还可以对常规变量进行类型转换、移动地址以及您可以使用的所有其他操作,因为分配给该变量的数据是恒定的。
一般来说,如果我们有选择,const 是一个更好的选择,它可以成功地应用于代码。在某些情况下,#define 不能被 const 替换。例如,#define 可以带参数。#define 还可用于将程序中的某些文本替换为另一个文本。