#include <stdio.h>
#define LIST_OF_ENUM_IDS \
X(A, 0) \
X(B, 1) \
X(C, 2) \
X(D, 4) \
X(E, 6) \
X(F, 8) \
X(G, 10)
#define X(id, val) \
id = val,
typedef enum
{
LIST_OF_ENUM_IDS
} my_enum;
#undef X
#define X(id, val) id##_impl_helper,
enum my_enum_impl_helper__ {
LIST_OF_ENUM_IDS
MY_ENUM_MAX_ELEMENTS
};
#undef X
int main(void) {
printf("%d %d %d", A
, G
, MY_ENUM_MAX_ELEMENTS
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIExJU1RfT0ZfRU5VTV9JRFMgXAogICAgWChBLCAwKSBcCiAgICBYKEIsIDEpIFwKICAgIFgoQywgMikgXAogICAgWChELCA0KSBcCiAgICBYKEUsIDYpIFwKICAgIFgoRiwgOCkgXAogICAgWChHLCAxMCkKCiNkZWZpbmUgWChpZCwgdmFsKSBcCiAgaWQgPSB2YWwsCgp0eXBlZGVmIGVudW0KewogIExJU1RfT0ZfRU5VTV9JRFMKfSBteV9lbnVtOwoKI3VuZGVmIFgKCiNkZWZpbmUgWChpZCwgdmFsKSBpZCMjX2ltcGxfaGVscGVyLAoKZW51bSBteV9lbnVtX2ltcGxfaGVscGVyX18gewogIExJU1RfT0ZfRU5VTV9JRFMKICBNWV9FTlVNX01BWF9FTEVNRU5UUwp9OwoKI3VuZGVmIFgKCmludCBtYWluKHZvaWQpIHsKCXByaW50ZigiJWQgJWQgJWQiLCBBLCBHLCBNWV9FTlVNX01BWF9FTEVNRU5UUyk7CglyZXR1cm4gMDsKfQo=