根据另一个数组的大小声明数组

问题描述 投票:0回答:1

我有一个颜色代码数组,其大小在编译时已知。 我想声明另一个相同大小的数组。 但下面的代码会抛出错误。

当然,我可以将大小声明为全局常量,然后在两个数组的声明中使用它。 但当我添加新颜色时,我不想继续调整尺寸不变。 有办法做到这一点吗? (变量是全局的。)

static const char *colors[] = {"#0000ff",
                                "#00ff00",
                                "#ff0000",
                                "#ffff00",
                                "#ff00ff",
                                "#00ffff",
                                "#ffffff",
                                "#000000",
                                "#ff8040",
                                "#c0c0c0",
                                "#808080",
                                "#804000"};

static const int NUM_COLORS = sizeof(colors) / sizeof(colors[0]);
static ColorButtons color_buttons[NUM_COLORS];
arrays c global
1个回答
0
投票

文件作用域数组的大小(如果指定)必须是整数常量表达式。 用

const
限定的变量不符合表达式之类的条件。

不要将

NUM_COLORS
设为变量,而是将其设为预处理器符号:

#define NUM_COLORS  (sizeof(colors) / sizeof(colors[0]))

扩展为 的表达式是 一个整型常量表达式,因此可以用作数组的大小。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.