对于以下图表声明(我无法更改 - 分配),
#define TAG(vp) ((vp)->tag)
#define LABEL(vp) ((vp)->label)
#define EDGE(vp) ((vp)->edge)
typedef struct vertex
{
char tag;
char *label;
struct vertex *edge[1];
}
vertex, *vp;
当我使用以下行分配内存时
EDGE (test) = (vp *) malloc (sizeof (vp) * 3); // where test is a node of a graph
我收到以下错误
error: incompatible types when assigning to type ‘struct vertex *[1]’ from type ‘struct vertex **
我也不能将 EDGE 分配为 NULL。我想我在声明中遗漏了一些东西(它使用 *ptr[1] 这让我很困惑)。你能帮我吗?
提前致谢。