带有来自另一个常量数组的变量的常量数组
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 const
s 不是真正的常量,如 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),
...
};
我有一个这样的常量数组:
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 const
s 不是真正的常量,如 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),
...
};