2013-01-16 16 views
-4

可能重复:
“static const” vs “#define” in CC/C++ - 它是推荐使用量静态或者将#define

我首先想到的是,这是隐含的,但有过一个理由为什么你会使用const而不是#define

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

+3

你能举一个你问的定义的例子吗? –

+1

“在#define中使用const”意味着什么? – juanchopanza

+2

“为什么你会使用const而不是#define”是一个错误的问题。它应该是“为什么你会使用#define而不是const?”答案是“毫无理由”。 –

回答

5

CONST通常替换#define

#define是预处理器的宏,可以做文本更换。你可以用它来定义一个常量或宏,或者做其他各种事情。

常量是一种安全的方式来定义一个编译时间常数

这两种机制发生在编译过程中不同的时间,但在一般情况下,常量是为了整顿#define的问题。

我很少看到有人这样做

#define CONSTINT const int 

,但它是合法的。

4

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

2

编辑这是回答你原来的问题,是否你会使用constdefine ...它并没有真正意义现在你编辑的问题要问不同的东西。

A #define没有定义变量,所以你不能改变它,所以这个问题没有意义。

这甚至是不可能的:

#define FOO 99 

int main() 
{ 
    FOO = 98; 
} 

由于预处理程序替换为更换99宏观FOO,所以编译器看到这个代码:

int main() 
{ 
    99 = 98; 
} 

很显然这是无稽之谈。你不能指定一个文字,它不是一个变量(const或不),它只是一个值。

相关问题