There’s no C Foundation paying me to advocate the language, and this book is not a sales pitch dressed up as a tutorial, so I can write freely about C’s problems. The bits here are too valuable to be in the don’t-bother category under which so many of the items in the previous chapter fall, but they also come with cautions about the historic cruft that made sense at the time and is now just a mess.
C’s macro facilities are pretty simple but still pack in a lot of little exceptions.
The usage of the
is at this point painfully confusing, though in the end, it will give us
a nice alternative to elaborate macros. Its complement in certain
extern keyword, also
gives us enough rope with which to hang ourselves.
const keyword fits this
chapter because it is too useful to not use, but it has oddities in its
specification in the standard and in its implementation in common
Chapter 10 will present several options for making the user interface to your library friendlier and less error-inviting, and will rely heavily on macros to do it.
I read a lot of people who say that macros are themselves
invitations for errors and should be avoided, but those people don’t
advise that you shouldn’t use
assert, type-generic math like
pow, and so on, or any of the dozens of other facilities defined by the GNU standard library via macros. Those are well-written, ...