我的第一个想法是这是隐含的,但是你有没有理由使用const
而不是#define
?
如果你设置了一个全局变量,你为什么要改变它,你又不想在全局范围内保护它?
我的第一个想法是这是隐含的,但是你有没有理由使用const
而不是#define
?
如果你设置了一个全局变量,你为什么要改变它,你又不想在全局范围内保护它?
const 通常替换#define
#define
是一个可以进行文本替换的预处理器宏。您可以使用它来定义常量或宏或执行各种其他操作。
const 是一种定义编译时常量的类型安全方式
这两种机制在编译过程中出现的时间不同,但总的来说,创建 const 是为了纠正#define
.
我很少看到人们做类似的事情
#define CONSTINT const int
但这是合法的。
const
仅与在运行时传递的变量相关,以确保子例程无法更改它们。#define
是一个预处理器编译时指令,它将您定义的任何内容替换为您定义的内容。因此,它们用于不同的目的。
编辑这是对您最初问题的回答,即您是否会使用const
...define
现在您已经编辑了问题以提出不同的问题,这真的没有意义。
A#define
没有定义变量,所以无论如何你都不能改变它,所以这个问题没有意义。
这甚至是不可能的:
#define FOO 99
int main()
{
FOO = 98;
}
因为预处理器用宏FOO
替换了替换99
,所以编译器看到这段代码:
int main()
{
99 = 98;
}
And obviously that's nonsense. You can't assign to a literal, it's not a variable (const or not) it's just a value.