Suggesting "safe enum" class for ISO C
Another problem with making the enum values pointers, is that it changes the in-memory representation of an enum. There are many situations where it's necessary for the enum to be an int (such as reading/writing structs to/from files). 

If you need type-checked enums, it is better to use C++.