C++ typedef和struct问题

Pra*_*are 0 c++ struct

typedef struct 
{
    int y;
    int weight;
    struct edgenode * next;
}edgenode;
Run Code Online (Sandbox Code Playgroud)

这段代码给出错误: 'edgenode' : redefinition; different basic types

它在C代码中工作正常.

为什么?

Jon*_*ler 7

因为你的结构没有名字!这个问题暗示了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)