如何在 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;
这对你的情况有效吗:?
我认为你只能在变量初始化时使用大括号中的表达式,而不是在赋值中:
初始化:
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 中查看有关结构初始化的更多信息。
我正在使用 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;
这对你的情况有效吗:?
我认为你只能在变量初始化时使用大括号中的表达式,而不是在赋值中:
初始化:
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 中查看有关结构初始化的更多信息。