ddb@mrvax.DEC (DAVID DYER-BENNET MRO1-2/L14 DTN 231-4076) (01/29/85)
The argument that improving the C pre-processor is a waste, because M4 already supports good pre-processing, and that running M4 isn't a problem because MAKE can be taught to do it, only apply to people running C ON UNIX!!!! I believe that the C language is useful in a wider arena than that, and I certainly think that the ANSI standard should define a language that isn't tied to Unix. I, for example, have written a few thousand lines of C code by now, but I've never compiled any of it on a Unix system. The limitations of the pre-processor are especially annoying to me, since I'm used to Macro-20 and Bliss, both of which can do much more. The C pre-processor is missing things which I've always, in my ignorance perhaps, considered basic necessities for any sort of systems-programming language, be it higher-level or assembly: for example, macros with variable numbers of arguments. Unique local symbols within macros. Reasonable conditionals within macros. For that matter, multi-line macro definitions (which can sort of be simulated by an ugly hack in some C compilers but not some of the ones I have to use)! (By the way, one of the innumerable reasons why C is usable as a systems programming language and Pascal isn't is that C has at least a minimal macro and conditional compilation facility. But Pascal is too easy a target, I should lay off it and study Modula 2 for a while; I really WANT strong typing, but only if it doesn't stop me from getting my work done in a moderately clean way.) -- David Dyer-Bennet -- ...decwrl!dec-rhea!dec-mrvax!ddb