1 // Matching
2 enum E1 {
3   E1Enumerator1,
4   E1Enumerator2 = 3,
5   E1Enumerator3
6 } x1;
7 
8 // Value mismatch
9 enum E2 {
10   E2Enumerator1,
11   E2Enumerator2 = 3,
12   E2Enumerator3
13 } x2;
14 
15 // Name mismatch
16 enum E3 {
17   E3Enumerator1,
18   E3Enumerator2 = 3,
19   E3Enumerator3
20 } x3;
21 
22 // Missing enumerator
23 enum E4 {
24   E4Enumerator1,
25   E4Enumerator2,
26   E4Enumerator3
27 } x4;
28 
29 // Extra enumerator
30 enum E5 {
31   E5Enumerator1,
32   E5Enumerator2,
33   E5Enumerator3
34 } x5;
35 
36 // Matching, with typedef
37 typedef enum {
38   E6Enumerator1,
39   E6Enumerator2
40 } E6;
41 
42 E6 x6;
43