typedef struct
{
int y;
int weight;
struct edgenode * next;
}edgenode;
Run Code Online (Sandbox Code Playgroud)
这段代码给出错误: 'edgenode' : redefinition; different basic types
它在C代码中工作正常.
为什么?
因为你的结构没有名字!这个问题暗示了C遗产 - 代码是按照我编写的方式编写的.
纯C++解决方案是:
struct edgenode
{
int y;
int weight;
edgenode *next;
};
Run Code Online (Sandbox Code Playgroud)
这在C中不起作用.在C中,与问题一致,你会写:
typedef struct edgenode
{
int y;
int weight;
struct edgenode * next;
} edgenode;
Run Code Online (Sandbox Code Playgroud)
现在你的结构有一个名字 - struct edgenode.当然edgenode,它还有一个typedef ,但编译器在到达最后的分号(大约)之前不知道该名称.你也可以这样写:
typedef struct edgenode edgenode;
struct edgenode
{
int y;
int weight;
edgenode *next;
};
Run Code Online (Sandbox Code Playgroud)