具有来自另一个const数组的变量的Const数组

时间:2015-01-11 13:20:40

标签: c arrays const

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

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

如何创建另一个const数组,对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)
};

但是这不起作用,它会返回错误:

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

对于所有元素

错误1初始值设定项元素不是常量

2 个答案:

答案 0 :(得分:5)

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


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

答案 1 :(得分:2)

cnicutar提供the answer to your question

仍然遵循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),
  ...
};