<分区>
我想了解定义常量变量的区别如下:
const int ONE = 1;
并使用预处理器指令:
#define ONE (1)
我知道在第二种情况下“1”在某种意义上被硬编码并且编译器甚至看不到变量 ONE,但我不确定第一种情况。将变量声明为常量的事实只是防止意外更改其值,或者编译器是否捕获机会进行一些优化?一种方法比另一种方法有什么显着的好处吗?
<分区>
我想了解定义常量变量的区别如下:
const int ONE = 1;
并使用预处理器指令:
#define ONE (1)
我知道在第二种情况下“1”在某种意义上被硬编码并且编译器甚至看不到变量 ONE,但我不确定第一种情况。将变量声明为常量的事实只是防止意外更改其值,或者编译器是否捕获机会进行一些优化?一种方法比另一种方法有什么显着的好处吗?
最佳答案
在C语言中,const int c;
表示c
在程序运行过程中不能被修改。但是,c
在编译时不是常量,不能用在常量表达式中。例如程序:
const int MAX = 10;
int a[MAX];
不编译,而:
#define MAX 10
int a[MAX];
确实如此。
在 C++ 中,const
变量是真正的编译时常量,因此使用 #define
的理由可能更少。一个需要 #define
的例子是当您需要在 #if
指令中使用常量时。
关于c - 常量变量的定义与#define,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23031681/