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/