我的第一个想法是这是隐含的,但是你有没有理由使用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.