c - 常量变量的定义与#define

标签 c parameters c-preprocessor

<分区>

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

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/

相关文章:

c - 代码执行的结果会是什么? C 运算符优先级

javascript - javascript 中被忽略的参数的值是多少?

c - #定义为无符号字符

c++ - 是否有针对各种操作系统(和版本)的预处理器定义列表?

c - 使用宏来概括函数调用的代码

c - 将范围划分为N个相等的数字

c - Windows重叠IO实际上是阻塞的

c# - C的反射类特征

c++ - 多个不同的构造函数作为函数参数

函数的 JavaScript 默认参数