C / C ++ - 建议使用const static或#define

时间:2013-01-16 23:54:45

标签: c++ c global-variables

  

可能重复:
  “static const” vs “#define” in C

我的第一个想法是这是隐含的,但有没有理由使用const代替#define

如果你设置了一个全局变量,你为什么要改变它,你也不想全局保护它?

3 个答案:

答案 0 :(得分:5)

Const通常会替换#define

#define是一个可以执行文本替换的预处理器宏。您可以使用它来定义常量或宏或执行各种其他操作。

const是一种定义编译时常量的类型安全方法

这两种机制在编译过程中的不同时间发生,但一般来说,const是为了纠正#define的问题而创建的。

我很少见到人们会做像

这样的事情
#define CONSTINT  const int

但这是合法的。

答案 1 :(得分:4)

const仅与在运行时传递的变量相关,以确保子例程不能更改它们。 #define是一个预处理程序编译时指令,它将您定义的内容替换为您定义的内容。因此,它们用于不同的目的。

答案 2 :(得分:2)

修改这是对您原始问题的回答,即您是否将constdefine一起使用......现在你真的没有意义我已经编辑了这个问题,问了不同的东西。

#define没有定义变量,因此无论如何你都无法改变它,所以问题没有意义。

这甚至不可能:

#define FOO 99

int main()
{
    FOO = 98;
}

因为预处理器将宏FOO替换为替换99,所以编译器会看到这段代码:

int main()
{
    99 = 98;
}

显然那是胡说八道。你不能分配给一个文字,它不是一个变量(const或不是)它只是一个值。