gpt4 book ai didi

c - 如何使用新的 C99 语法初始化结构?

转载 作者:行者123 更新时间:2023-11-30 15:21:17 25 4
gpt4 key购买 nike

我正在尝试使用新的 C99 初始化语法来初始化结构。但是,每当我编译如下设置的代码时,我都会从 GCC 4.9.2 收到编译错误“'{' token 之前的预期表达式”:

// *.h file
typedef struct
{
int x;
int y;
} SPoint;

typedef struct
{
SDL_Window* window;
SPoint position;
} SWindow;

// *.c file
SWindow* create(int x, int y) {
SWindow* window = malloc(sizeof(SWindow));
// snip
(*window) = { .window = sdlWindow,
.position = { .x = x,
.y = y }};
// snip

如果我在初始化程序前面添加一个“(SWindow)”,它可以正常编译。除了一些语法上的丑陋(如果你对此有一些建议,我将不胜感激),我不明白我错过了什么。

我做错了什么?

最佳答案

(*window) = { .window = sdlWindow,
.position = { .x = x,
.y = y }};

不是初始化。是作业。通过使用

(*window) = (SWindow) { .window = sdlWindow,
.position = { .x = x,
.y = y }};

您要求编译器创建一个临时对象,然后使用该临时对象进行赋值。

关于c - 如何使用新的 C99 语法初始化结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29597695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com