Another point of 'enum' types is visibility. Use of #define results in a definition with file scope, while an enum type definition can have the same scope as any other object (i.e., can be defined within a function or block).