繁体   English   中英

在C中定义常量

[英]Defining constants in 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”的定义。

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

您需要从#define X行中删除分号

#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 {
  X = 5 + 3,
  Y = (X + 10) * 5,
  Z = ((Y + 8) + 0xfff) & ~0xfff
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM