我想了解定义常量变量之间的区别如下:
const int ONE = 1;
并使用预处理程序指令:
#define ONE (1)
我知道在第二种情况下" 1"在某种意义上硬编码硬编码,编译器甚至看不到变量ONE,但我不确定第一种情况。将变量声明为常量的事实只是防止意外更改其值,或者编译器是否抓住机会进行一些优化?一种方法相对于另一种方法有什么显着的好处吗?
答案 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
指令中使用常量时。