Typedef struct en C Vs C ++

Cela donne une erreur en C++ mais pas en C:

typedef struct nodes
{
    int data;
    struct node *next;
}node;

Il donne le message d'erreur suivant en 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)) ===|

Pour qu'il fonctionne en C++, je dois le changer à cela:

typedef struct node
{
    int data;
    struct node *next;
}node;

Je ne comprends pas pourquoi ce qui se passe, je veux savoir l'ordre d'exécution en C et C++ afin que je puisse comprendre.

source d'informationauteur Achyut Rastogi