尝试初始化结构体数组中的'{'标记之前的预期表达式

用户名

我的代码如下。在标有的行上*,我得到:

error: expected expression before ‘{’ token
rval.adj_list[0] = { {"B","C",3},{"B","A",2} };

是否有一种紧凑的方法来初始化动态分配的指针“双数组”?

struct node;

struct edge {
    char *from;
    char *to;
    int weight;
};

struct digraph {
    char **vertices;
    struct edge **adj_list;
};

int main( int argc, char *argv[] ) {
    struct digraph rval;
    int size = 5;
    rval.vertices = malloc( size * sizeof(char*));
    rval.adj_list = malloc( size * sizeof(struct edge*));
    rval.vertices[0] = "A";
    rval.adj_list[0] = { {"A","B",2},{"A","E",1} };  //********
    rval.vertices[1] = "B";
    rval.adj_list[1] = { {"B","C",3},{"B","A",2} };  //********
    rval.vertices[2] = "C";
    rval.vertices[3] = "D";
    rval.vertices[4] = "E";
}
乔纳森·莱夫勒

您需要一个C99“复合文字”,它看起来像是强制转换,后跟括号中的初始化程序。

rval.adj_list[0] = (struct edge []){ {"A","B",2},{"A","E",1} }; 

这导致:

#include <stdlib.h>

struct node;

struct edge {
    char *from;
    char *to;
    int weight;
};

struct digraph {
    char **vertices;
    struct edge **adj_list;
};

int main(void)
{
    struct digraph rval;
    int size = 5;
    rval.vertices = malloc( size * sizeof(char*));
    rval.adj_list = malloc( size * sizeof(struct edge*));
    rval.vertices[0] = "A";
    rval.adj_list[0] = (struct edge[]){ {"A","B",2}, {"A","E",1} };
    rval.vertices[1] = "B";
    rval.adj_list[1] = (struct edge[]){ {"B","C",3}, {"B","A",2} };
    rval.vertices[2] = "C";
    rval.vertices[3] = "D";
    rval.vertices[4] = "E";
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

错误:C ++中']'标记之前的预期主表达式

来自分类Dev

错误:带有结构的']'标记之前的预期主表达式

来自分类Dev

错误:分配字符数组时,'{'标记之前的预期表达式

来自分类Dev

CRTP派生的模板化方法调用在'>'标记之前产生预期的主表达式

来自分类Dev

错误:typedef表达式中“ COUNT_TYPE”之前的预期初始化程序

来自分类Dev

错误:typedef表达式中“ COUNT_TYPE”之前的预期初始化程序

来自分类Dev

错误:在C中的switch语句中定义二维数组时在'{'标记之前的预期表达式

来自分类Dev

堆栈在C中,“ int”之前的预期表达式

来自分类Dev

错误:在C中初始化二维结构变量时的预期表达式

来自分类Dev

函数“指针之前的期望表达式=标记”中的指针

来自分类Dev

尝试调用函数之前在“ int”之前预期的主表达式

来自分类Dev

'!='标记之前的预期主表达式

来自分类Dev

','标记之前的预期表达式

来自分类Dev

'>'标记之前的预期主表达式

来自分类Dev

预期在'='标记之前的主要表达式

来自分类Dev

初始化多维数组时出现“预期表达式”错误

来自分类Dev

由于使用typedef或标头,导致C““结构”之前的预期表达式”错误

来自分类Dev

带有musl的宏函数内的`offsetof`宏参数的“错误:结构之前的预期表达式”

来自分类Dev

错误:“ int”之前的预期主表达式(在接受数组的函数的上下文中)

来自分类Dev

错误:“ int”之前的预期主表达式以及代码中的许多类似错误

来自分类Dev

预期在“。”之前的主要表达式。令牌中ordered_map()

来自分类Dev

在继承的简单实现中,生成错误的来源“'float'之前为预期的主要表达式”

来自分类Dev

当我尝试使用C中的参数调用函数时,出现错误“错误:...之前的预期表达式”

来自分类Dev

标记化正则表达式

来自分类Dev

错误:')'标记之前的预期主要表达式(C)

来自分类Dev

'!='标记之前的预期表达式...我错了吗?

来自分类Dev

无法编译:错误:'('标记之前的预期主表达式

来自分类Dev

错误:“)”标记之前的预期主表达式

来自分类Dev

C ++错误:'('标记之前的预期主表达式

Related 相关文章

  1. 1

    错误:C ++中']'标记之前的预期主表达式

  2. 2

    错误:带有结构的']'标记之前的预期主表达式

  3. 3

    错误:分配字符数组时,'{'标记之前的预期表达式

  4. 4

    CRTP派生的模板化方法调用在'>'标记之前产生预期的主表达式

  5. 5

    错误:typedef表达式中“ COUNT_TYPE”之前的预期初始化程序

  6. 6

    错误:typedef表达式中“ COUNT_TYPE”之前的预期初始化程序

  7. 7

    错误:在C中的switch语句中定义二维数组时在'{'标记之前的预期表达式

  8. 8

    堆栈在C中,“ int”之前的预期表达式

  9. 9

    错误:在C中初始化二维结构变量时的预期表达式

  10. 10

    函数“指针之前的期望表达式=标记”中的指针

  11. 11

    尝试调用函数之前在“ int”之前预期的主表达式

  12. 12

    '!='标记之前的预期主表达式

  13. 13

    ','标记之前的预期表达式

  14. 14

    '>'标记之前的预期主表达式

  15. 15

    预期在'='标记之前的主要表达式

  16. 16

    初始化多维数组时出现“预期表达式”错误

  17. 17

    由于使用typedef或标头,导致C““结构”之前的预期表达式”错误

  18. 18

    带有musl的宏函数内的`offsetof`宏参数的“错误:结构之前的预期表达式”

  19. 19

    错误:“ int”之前的预期主表达式(在接受数组的函数的上下文中)

  20. 20

    错误:“ int”之前的预期主表达式以及代码中的许多类似错误

  21. 21

    预期在“。”之前的主要表达式。令牌中ordered_map()

  22. 22

    在继承的简单实现中,生成错误的来源“'float'之前为预期的主要表达式”

  23. 23

    当我尝试使用C中的参数调用函数时,出现错误“错误:...之前的预期表达式”

  24. 24

    标记化正则表达式

  25. 25

    错误:')'标记之前的预期主要表达式(C)

  26. 26

    '!='标记之前的预期表达式...我错了吗?

  27. 27

    无法编译:错误:'('标记之前的预期主表达式

  28. 28

    错误:“)”标记之前的预期主表达式

  29. 29

    C ++错误:'('标记之前的预期主表达式

热门标签

归档