【发布时间】:2021-03-06 03:19:09
【问题描述】:
我有 2 个结构,一个用于颜色 (PixelColor),第二个用于保存可用颜色数组 (Palette)。
typedef struct{
int r;
int g;
int b;
int a;
}PixelColor;
typedef struct{
int size;
PixelColor *palette;
}Palette;
一个游戏的全局调色板和一个用于引用全局调色板中颜色的对象。
PixelColor ShovelKnightColors[] = {
{0, 0, 0, 255},
{44, 44, 44, 255},
{96, 96, 96, 255},
{200, 192, 192, 255},
{0, 64, 88, 255},
...
};
Palette GamePalette = {59, ShovelKnightColors};
PixelColor CharacterColors[4];
//This doesn't work
CharacterColors[0] = GamePalette.palette[0];
CharacterColors[1] = GamePalette.palette[17];
CharacterColors[2] = GamePalette.palette[24];
CharacterColors[3] = GamePalette.palette[37];
Palette CharacterPalette = {4, CharactersColors};
我可能遗漏了一个基本的东西,但我尝试了我的任何想法。举个例子:
PixelColor CharacterColors[] = {
GamePalette.palette[0],
GamePalette.palette[17],
GamePalette.palette[24],
GamePalette.palette[37]
}
所有这些都超出了主要功能,只是为了学习我不知道的关于启动的东西。请提出一种最接近引用相同值的初始想法的方法,因为目标是创建一个 ESP32 微控制器项目。
【问题讨论】:
-
为什么不:
PixelColor CharacterColors[4] = {GamePalette.palette[0], GamePalette.palette[17], GamePalette.palette[24], GamePalette.palette[37]};(请注意您的示例中缺少的 4) -
我已经尝试过了,但出现错误:初始化元素不是常量。这是在 main() 之前
标签: arrays c pointers initialization