在C中定义常量

时间:2011-04-19 19:39:09

标签: c++ c

我正在使用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中,这些定义会引发错误。 当我使用#defines而不是像

这样的常量时
#define X (5+3);
#define Y (((X) + 10) * 5)
#define Z ((((Y) + 8) + 0xfff) & ~0xfff)

C编译器抱怨“Y”和“Z”的定义。

有人可以帮我找到解决方案。

3 个答案:

答案 0 :(得分:5)

您需要从#define X行

中删除分号
#define X (5+3)
#define Y (((X) + 10) * 5)
#define Z ((((Y) + 8) + 0xfff) & ~0xfff)

答案 1 :(得分:3)

#define X (5+3);错了,需要#define X (5+3)(没有';') 你也要注意使用静态const和#define之间的区别:在静态const中,值实际是在#define中计算的,它是预处理器命令,所以

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

将导致两次评估very_heavy_calc()

答案 2 :(得分:1)

另一种选择是使用枚举:

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