在C中定义常量

Defining constants in C

本文关键字:常量 定义      更新时间:2023-10-16

我用c++工作了很长时间,现在我在做一个C项目。
我正在把一个c++程序转换成C。

我对程序中使用的常量有困难。
在c++代码中,我们定义了像

这样的常量
static const int X = 5 + 3;
static const int Y = (X + 10) * 5
static const int Z = ((Y + 8) + 0xfff) & ~0xfff
在C中,这些定义抛出错误。当我使用#define代替像 这样的常量时
#define X (5+3);
#define Y (((X) + 10) * 5)
#define Z ((((Y) + 8) + 0xfff) & ~0xfff)

C编译器报错了"Y"answers"Z"的定义。

谁能帮我找到一个解决这个问题的方法

你需要从#define X line中去掉分号

#define X (5+3)
#define Y (((X) + 10) * 5)
#define Z ((((Y) + 8) + 0xfff) & ~0xfff)

#define X (5+3);是错误的,需要是#define X (5+3)(不带';')
也要注意使用静态const和#define之间的区别:在静态const中,值实际上是求值的,在#define中,它是预处理命令,所以

#define n very_heavy_calc()
...
n*n;

将导致计算两次very_heavy_calc()

另一个选择是使用enum:

enum {
  X = 5 + 3,
  Y = (X + 10) * 5,
  Z = ((Y + 8) + 0xfff) & ~0xfff
};