// Matching
enum E1 {
E1Enumerator1,
E1Enumerator2 = 3,
E1Enumerator3
} x1;
// Value mismatch
enum E2 {
E2Enumerator1,
E2Enumerator2 = 3,
E2Enumerator3
} x2;
// Name mismatch
enum E3 {
E3Enumerator1,
E3Enumerator2 = 3,
E3Enumerator3
} x3;
// Missing enumerator
enum E4 {
E4Enumerator1,
E4Enumerator2,
E4Enumerator3
} x4;
// Extra enumerator
enum E5 {
E5Enumerator1,
E5Enumerator2,
E5Enumerator3
} x5;
// Matching, with typedef
typedef enum {
E6Enumerator1,
E6Enumerator2
} E6;
E6 x6;