带有来自另一个常量数组的变量的常量数组

Const array with variables from another const array

我有一个这样的常量数组:

const int foo[NUM] = {
    9000,
    4400,
    620,
    480,
    1620
};

如何创建另一个常量数组来对来自 foo 的变量进行一些数学运算?我试过这个:

const int bar[NUM] = {
    foo[0] / (DEFINE1* DEFINE2),
    foo[1] / (DEFINE1* DEFINE2),
    foo[2] / (DEFINE1* DEFINE2),
    foo[3] / (DEFINE1* DEFINE2),
    foo[4] / (DEFINE1* DEFINE2)
};

但是这不起作用,它 returns 错误:

错误 2('bar[0]' 接近初始化),对于所有元素

错误 1 ​​初始化元素不是常量,对于所有元素

C consts 不是真正的常量,如 C FAQ 中所述。因此,编译器只强制您不能写入它们。对于所有其他用途,它们不是常量(您定义的方式)。


旁注:这是 C 和 C++ 不同的地方之一。在 C++ 中,const 具有明显不同的含义,更接近您正在尝试的内容。

cnicutar gives .

仍然遵循 DRY-principles 的可能解决方法是:

#define FOO_0 (9000)
#define F00_1 (4400)
...

const int foo[NUM] = {
  FOO_0,
  FOO_1,
  ...
};

const int bar[NUM] = {
  FOO_0 / (DEFINE1* DEFINE2),
  FOO_1 / (DEFINE1* DEFINE2),
  ...
};