如何在 C 中初始化 SDL_Color?

How to initialize SDL_Color in C?

我正在使用 SDL 库在 C 中制作图形客户端,当我想设置我的 SDL_Color 类型时遇到问题。

我将我的变量声明为

SDL_Color color;
color = {255, 255, 255};
/* rest of code */

然后 gcc 告诉我:

25:11: error: expected expression before ‘{’ token color = {0, 0, 0};

我在一些运算符重载的 C++ 案例中找到了很好的答案,但恐怕我真的不知道如何在 C 中解决这个问题。

您不能为这样的结构赋值。您只能这样做来初始化您的结构:

SDL_Color color = {255, 255, 255};

你也可以使用指定的初始化器:

SDL_Color color = {.r = 255, .g = 255, .b = 255};

参见3 ways to initialize a structure

如果您想在结构声明后更改其值,则必须逐个更改值:

SDL_Color color;
color.r = 255;
color.g = 255;
color.b = 255;

这对你的情况有效吗:?

https://wiki.libsdl.org/SDL_Color

我认为你只能在变量初始化时使用大括号中的表达式,而不是在赋值中:

初始化:

SDL_Color color = { 255, 255, 255 };  // By the way, maybe set also color.a

分配(逐个成员):

SDL_Color color;
color.r = 255;
color.g = 255;
color.b = 255;
color.a = 255;

How to initialize a struct in accordance with C programming language standards 中查看有关结构初始化的更多信息。