可能重复:
“static const” vs “#define” in CC/C++ - 它是推荐使用量静态或者将#define
我首先想到的是,这是隐含的,但有过一个理由为什么你会使用const
而不是#define
?
如果你设置了一个全局变量,为什么你会想要改变它,并且你不想在全局上保护它?
可能重复:
“static const” vs “#define” in CC/C++ - 它是推荐使用量静态或者将#define
我首先想到的是,这是隐含的,但有过一个理由为什么你会使用const
而不是#define
?
如果你设置了一个全局变量,为什么你会想要改变它,并且你不想在全局上保护它?
CONST通常替换#define
#define
是预处理器的宏,可以做文本更换。你可以用它来定义一个常量或宏,或者做其他各种事情。
常量是一种安全的方式来定义一个编译时间常数
这两种机制发生在编译过程中不同的时间,但在一般情况下,常量是为了整顿#define
的问题。
我很少看到有人这样做
#define CONSTINT const int
,但它是合法的。
const
仅与在运行时传递的变量相关,以确保子例程不能更改它们。 #define
是一个预处理器编译时指令,它将您定义的内容替换为您定义的内容。因此,他们是为了不同的目的。
编辑这是回答你原来的问题,是否你会使用const
有define
...它并没有真正意义现在你编辑的问题要问不同的东西。
A #define
没有定义变量,所以你不能改变它,所以这个问题没有意义。
这甚至是不可能的:
#define FOO 99
int main()
{
FOO = 98;
}
由于预处理程序替换为更换99
宏观FOO
,所以编译器看到这个代码:
int main()
{
99 = 98;
}
很显然这是无稽之谈。你不能指定一个文字,它不是一个变量(const或不),它只是一个值。
你能举一个你问的定义的例子吗? –
“在#define中使用const”意味着什么? – juanchopanza
“为什么你会使用const而不是#define”是一个错误的问题。它应该是“为什么你会使用#define而不是const?”答案是“毫无理由”。 –