这在C++中会报错,但在C中不会:
typedef struct nodes
{
int data;
struct node *next;
}node;
在C++中,它会出现以下错误。
/home/DS cpp/linkedlist.cpp|10|error: conflicting declaration ‘typedef struct nodes node’|
/home/DS cpp/linkedlist.cpp|9|error: ‘struct node’ has a previous declaration as ‘struct node’|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
为了在C++中使其正常工作,我必须将其更改为:
typedef struct node
{
int data;
struct node *next;
}node;
我不明白为什么会发生这种情况,我想知道在C和C++中执行的顺序,以便我能够理解它。
typedef
吗?“让它起作用”的正确方法是struct node { int data; node* next;};
。请注意,翻译并未更改原意,而只是使其更加简洁易懂。 - juanchopanzastruct node*
声明了一个新类型,与struct nodes
不同。 - Jonathan Wakely