What is the difference between an enumeration and a set of preprocessor #defines?
|
|
|
|
|
At the present time, there is little difference. Although many
people might have wished otherwise, the C Standard says that
enumerations may be freely intermixed with other integral types,
without errors. (If such intermixing were disallowed without
explicit casts, judicious use of enumerations could catch
certain programming errors.)
Some advantages of enumerations are that the numeric values are
automatically assigned, that a debugger may be able to display
the symbolic values when enumeration variables are examined, and
that they obey block scope. (A compiler may also generate
nonfatal warnings when enumerations and integers are
indiscriminately mixed, since doing so can still be considered
bad style even though it is not strictly illegal.) A
disadvantage is that the programmer has little control over
those nonfatal warnings; some programmers also resent not having
control over the sizes of enumeration variables.
Related items
Only registered users can write comments. Please login or register.
|