typedef struct
{
    int y;
    int weight;
    struct edgenode * next;
}edgenode;


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

它在C代码中可以正常工作。

为什么?

最佳答案

因为您的结构没有名字!这个问题暗示了C的传统-代码是按照我编写代码的方式编写的。

纯C ++解决方案是:

struct edgenode
{
    int       y;
    int       weight;
    edgenode *next;
};


这在C语言中不起作用。在C语言中,并且与问题相符,您将编写:

typedef struct edgenode
{
    int y;
    int weight;
    struct edgenode * next;
} edgenode;


现在,您的结构有了一个名称-struct edgenode。当然,还有一个typedef-edgenode,但是编译器直到到达最后一个分号(大约)时才知道该名称。您还可以编写:

typedef struct edgenode edgenode;
struct edgenode
{
    int       y;
    int       weight;
    edgenode *next;
};

关于c++ - C++ typedef和struct问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3440271/

10-13 03:45