Detecting mismatched array enum initializers

This is possibly a situation where X macros could be applied.

animals.x

X(DOG,    2)
X(SPIDER, 8)
X(WORM,   0)

foo.c

enum {
#define X(a,b) ID_##a,
#include "animals.x"
#undef X
};

int const numberOfEyes[] = {
#define X(a,b) b,
#include "animals.x"
#undef X
};

This not only guarantees that the lengths match, but also that the orders are always kept in sync.

Leave a Comment