[net.micro] Warning about CI-C86 #define

jcw@cvl.UUCP (07/02/83)

One thing I found out about the Computer Innovations C compiler
preprocessor phase when trying to port some of my code that worked
on a UN*X C compiler was an inconsistancy in function macros.
When you say
   #define func(x,y) text ...
all occurences of the parameters of the strings "x" and "y" in the
text are substituted for, not just where identifiers appear.  For
example,
   #define debug(f) fprintf(stderr,"%s\n",f)
   debug("Hello");
would become:
   "Hello"print"Hello"(stderr,"%s\n","Hello");

which can really screw things up.  My advice is to use long names for
the formal parameters in a #define, which is unfortunately the opposite
of what people are inclined to use.
                                    -Jay Weber
{...!seismo!rlgvax!cvl!jcw}