I'm wondering about the practical use of #undef in C. I'm working through K&R, and am up to the preprocessor. Most of this was material I (more or less) understood, but something on page 90 (second edition) stuck out at me:
Names may be undefined with
#undef
, usually to ensure that a routine is really a function, not a macro:
#undef getchar
int getchar(void) { ... }
Is this a common practice to defend against someone #define
-ing a macro with the same name as your function? Or is this really more of a sample that wouldn't occur in reality? (EG, no one in his right, wrong nor insane mind should be rewriting getchar()
, so it shouldn't come up.) With your own function names, do you feel the need to do this? Does that change if you're developing a library for others to use?