【发布时间】:2016-10-14 08:16:30
【问题描述】:
在标记的行中我收到错误Error - expected expression
#include <stdlib.h>
struct list_head {
struct list_head *next, *prev;
};
struct program_struct {
const char *name;
struct list_head node;
};
typedef struct program_struct program_t;
struct task_t {
program_t blocked_list;
};
int main() {
struct task_t *p = malloc(sizeof(*p));
p->blocked_list.name = NULL;
p->blocked_list.node = {&(p->blocked_list.node), &(p->blocked_list.node)}; //error
return 0;
}
我知道我可以用
替换这一行p->blocked_list.node.next = &(p->blocked_list.node);
p->blocked_list.node.prev = &(p->blocked_list.node);
但是我可以像我在第一段代码中尝试的那样使用{} 让它工作吗?
【问题讨论】:
-
即使您可以为此使用复合文字,没有理由这样做。而是使用最易读的形式,即两行:
p->blocked_list.node.next = &p->blocked_list.node; p->blocked_list.node.prev = &p->blocked_list.node;这是最清晰的形式,因此是首选。
标签: c struct initialization