Différence entre les struct et enum?

Je suis novice en C++, et que vous voulez comprendre ce qu'est la différence entre dire

typedef enum stateUpdateReasonCode
{
    a=1,
    b=2,
    c=3
} StateUpdateReasonCode;

et

struct StateUpdateReasonCode
{
   a=1,
   b=2,
   c=3
};

Quelle est la différence entre eux ? Pourquoi devrions-nous utiliser l'un plutôt qu'un autre ?

Salutations

Je serais personnellement utiliser celui qui compile. Sur une note de côté, typedef enum {...} blah; est tout aussi inutile en C++ comme typedef struct {...} blah;.
Que voulez-vous dire "celui qui compile"
coliru.stacked-crooked.com/a/7e22baff11991d8e
cela ne compile pas.

OriginalL'auteur AndroidDev | 2013-12-19