http://kor.i2p/books/The%20C%20Programming%20Language%20by%20K&R/chapter2.html
Although variables of enum types may be
declared, compilers need not check that what you store in such a variable is
a valid value for the enumeration. Nevertheless, enumeration variables offer
the chance of checking and so are often better than #define s. In
addition, a debugger may be able to print values of enumeration variables in
their symbolic form. 2.4 Declarations All variables must be declared before use, although certain declarations
can be made implicitly by content.