%% (fortunes2) There has also been some work to allow the interesting use of macro names. For example, if you wanted all of your "creat()" calls to include read permissions for everyone, you could say #define creat(file, mode) creat(file, mode | 0444) I would recommend against this kind of thing in general, since it hides the changed semantics of "creat()" in a macro, potentially far away from its uses. To allow this use of macros, the preprocessor uses a process that is worth describing, if for no other reason than that we get to use one of the more amusing terms introduced into the C lexicon. While a macro is being expanded, it is temporarily undefined, and any recurrence of the macro name is "painted blue" -- I kid you not, this is the official terminology -- so that in future scans of the text the macro will not be expanded recursively. (I do not know why the color blue was chosen; I'm sure it was the result of a long debate, spread over several meetings.) -- From Ken Arnold's "C Advisor" column in Unix Review