/* Macros of enums */ // NOTE: all declarations are selected, unless otherwise specified. enum MyEnum {x}; // no binding spec void foo (enum MyEnum x); #define A enum MyEnum // no binding spec #define B A // no binding spec void fooA (A x); void fooB (B x); /* TODO: can be enabled once the 'TransitiveDependenciesMissing' warning is fixed. See issue #1513. // _X, _Y and _Z are intentionally distinct macros from A and B. We want C, D, // and E to refer to unselected macros. enum _X {y}; // unselected #define _Y enum _X // unselected #define _Z _Y // unselected #define C _Z // binding spec #define D C // binding spec #define E C // no binding spec void fooC (C x); void fooD (D x); void fooE (E x); */