Comment by OskarS
4 years ago
Hey, even an article written by Walter, that's a fun coincidence! :)
This is slightly different than the form I've seen it, but same idea: in the version I've seen, you have a special file that's like "enums.txt" with contents like (warning, not tested):
X(red)
X(green)
X(blue)
and then you write:
typedef enum {
#define X(x) x
#include "enums.txt"
#undef X
} color;
const char* getColorName(color c) {
switch (c) {
#define X(x) case x: return #x;
#include "enums.txt"
#undef X
}
}
Same idea, just using an #include instead of listing them in a macro. Thinking about it, it's sort-of a compile time "visitor pattern".
As an update, I removed all use of the X macro in my own code.