[comp.lang.c] #define then

gwyn@smoke.BRL.MIL (Doug Gwyn ) (12/10/88)

In article <6580@polyslo.CalPoly.EDU> cquenel@polyslo.CalPoly.EDU (Chris (i = --i++;) Quenelle) writes:
>>#define then    /*  as white space; see below  */
>>	if (a > 10)
>>	  then putchar('1');
>>	  else putchar('2');
>I vote strongly for this.  The symmetry scans very easily for me.

It might be "easy", but it's wrong.  Consider
	if (a > 10)
	  then putchar('1');
	       something();
	  else putchar('2');
	       somethingElse();

Steve Bourne used a lot of (more elaborate and more correct) macro
definitions to make his C source code look more like Algol.  He was
nearly universally cursed for having done so.  Finally at least the
Bourne shell sources were straightened out; I don't know whether
the "adb" sources were ever fixed.

The consensus among experienced C users today is to not try to make
the source code look like it's written in some other programming
language, but rather to use C's native control constructs.  That way
any person who knows C can immediately understand the control
structure of your source code, whereas if you introduce a lot of
special syntactic sugar, they would have to first puzzle that out
before they could reliably understand your source code.