常量变量与#define的定义

时间:2014-04-12 14:29:18

标签: c parameters c-preprocessor

我想了解定义常量变量之间的区别如下:

const int ONE = 1; 

并使用预处理程序指令:

#define ONE (1)

我知道在第二种情况下" 1"在某种意义上硬编码硬编码,编译器甚至看不到变量ONE,但我不确定第一种情况。将变量声明为常量的事实只是防止意外更改其值,或者编译器是否抓住机会进行一些优化?一种方法相对于另一种方法有什么显着的好处吗?

1 个答案:

答案 0 :(得分:0)

在C中,const int c;表示在程序运行期间无法修改c。但是,c在编译期间不是常量,不能在常量表达式中使用。例如程序:

const int MAX = 10;
int a[MAX];

无法编译,而:

#define MAX 10
int a[MAX];

一样。

在C ++中,const变量是真正的编译时常量,因此使用#define的原因可能更少。需要#define的示例是当您需要在#if指令中使用常量时。