“将'sizeof'无效应用于不完整类型'graph_edge {aka struct Graph_Edge}'”

时间:2018-02-18 12:13:05

标签: c graph types malloc

我不明白为什么我得到这个错误我看了其他答案,我做的一切都正确。在图形数据中,我在结构Graph_Edge的定义之前在“struct Graph_Node”中使用“struct Graph_Edge”。我在“struct Graph_Edge”中使用“struct Graph_Node”。我不确定这可能是原因,如果是,我不明白为什么。

图表数据:

#ifndef Graph_Structure
#define Graph_Structure

#include <stdbool.h>

struct Graph_Node{

    int id;
    char node_name[100];

    //bool path;

    struct Graph_Node* next;
    struct Graph_Edge* edge;

    //struct Graph_Node* next_edge;

    };

struct Graph_Egde{

    int src;
    int dst;

    bool path;

    struct Graph_Edge* next;
    struct Graph_Node* node; 

};  

typedef struct Graph_Node graph_node;
typedef struct Graph_Edge graph_edge;


#endif  

插入方法:

#include "graph.h"

...

void insert_edge(graph_edge** edge, graph_node* node, int src, int dst){

    graph_edge* temp = (graph_edge*)malloc(sizeof(graph_edge)); // the error is here

    temp->src = src; 
    temp->dst = dst;

    temp->node = node;

    temp->path = false; 

    temp->next = *edge;
    *edge = temp;
}

我在malloc行的insert_edge方法中遇到了这种错误。

1 个答案:

答案 0 :(得分:2)

你有一个错字:

struct Graph_Egde

应该是

struct Graph_Edge