C++ C/C++;-建议使用const static还是#define
可能重复:C++ C/C++;-建议使用const static还是#define,c++,c,global-variables,C++,C,Global Variables,可能重复: 我的第一个想法是,这是隐含的,但是有没有理由使用const而不是#define 如果您设置了一个全局变量,为什么要更改它,并且不想全局保护它呢?Const通常会替换\define #define是一个预处理器宏,可以执行文本替换。您可以使用它来定义常量或宏,或执行各种其他操作 const是定义编译时常量的一种类型安全的方法 这两种机制在编译过程中的不同时间出现,但一般来说,创建const是为了纠正#define的问题 我很少看到有人这样做 #define CONSTINT con
我的第一个想法是,这是隐含的,但是有没有理由使用
const
而不是#define
如果您设置了一个全局变量,为什么要更改它,并且不想全局保护它呢?Const通常会替换
\define
#define
是一个预处理器宏,可以执行文本替换。您可以使用它来定义常量或宏,或执行各种其他操作
const是定义编译时常量的一种类型安全的方法
这两种机制在编译过程中的不同时间出现,但一般来说,创建const是为了纠正#define
的问题
我很少看到有人这样做
#define CONSTINT const int
但是它是合法的。
const
仅与运行时传递的变量相关,以确保子例程无法更改它们#define
是一个预处理器编译时指令,它用您定义的内容替换您定义的内容。因此,它们的用途不同。编辑这是对您最初的问题的回答,即您是否将常量
与定义一起使用。。。现在你已经编辑了这个问题,问了一些不同的问题,这真的没有意义
#define
没有定义变量,因此您无法更改它,因此这个问题没有意义
这甚至是不可能的:
#define FOO 99
int main()
{
FOO = 98;
}
因为预处理器用宏FOO
代替替换的99
,所以编译器会看到以下代码:
int main()
{
99 = 98;
}
显然这是胡说八道。你不能给一个文字赋值,它不是一个变量(const或not),它只是一个值。你能举一个你要问的定义的例子吗?用const加上#define是什么意思?为什么用const代替#define是个错误的问题。它应该是“为什么你要用C++定义而不是const?”,答案是“完全没有理由”,而且,对于这个问题,你应该区分C或C++。C++总是偏爱静态const,或者const to y*定义。在绝对必要时,C++只使用预处理器。另一方面,C将使用预处理器,因此需要一个例子来给出一个“正确”的答案。@ JoshPetitt,C必须使用预处理器更多,因为 const int <代码>不是有效的常量表达式,所以不能在C++中的许多地方使用。