我有一个像这样的常数数组:
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初始值设定项元素不是常量
答案 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),
...
};