[comp.unix.questions] cpp, Using it to process shell scripts

rhoward@msd.gatech.edu (Robert L. Howard) (07/13/90)

When using cpp to process the source to a script file, cpp always
puts a blank line in the output for everytime it encounters a
#directive or a /*comment*/.  (This is SunOS 4.1)  Is this normal
behavior?  If so, why?  It really makes the resulting shell script 
messy with all those blank lines...

My manual suggests m4 as an alternative but I'm not sure it won't
do the same thing.  More importantly, this is a X11 shell script
with an Imakefile with all the predefined rules pointing to cpp
already.

If m4 is the correct choice, why didn't MIT choose to use it?

Inquiring minds want to know....

Thanks,
Robert
--
| Robert L. Howard             |    Georgia Tech Research Institute     |
| rhoward@msd.gatech.edu       |    MATD Laboratory                     |
| (404) 528-7165               |    Atlanta, Georgia  30332             |
|     UUCP:   ...!{allegra,amd,hplabs,ut-ngp}!gatech!msd!rhoward        |

guy@auspex.auspex.com (Guy Harris) (07/14/90)

>When using cpp to process the source to a script file, cpp always
>puts a blank line in the output for everytime it encounters a
>#directive or a /*comment*/.  (This is SunOS 4.1)  Is this normal
>behavior?

Yes.

>If so, why?

It's the way the S5R3 C preprocessor, upon which the SunOS 4.x one is
based, happens to sync up line numbers.  I've seen cases where older
pre-processors caused the compiler to get line numbers wrong, and where
the later one doesn't.

>It really makes the resulting shell script messy with all those blank
>lines...

"cpp" stands for C Pre-Processor, not "shell script preprocessor" nor
"Makefile preprocessor".  The fact that it happens to be usable, in some
cases, for other languages is pure serendipity.

>My manual suggests m4 as an alternative but I'm not sure it won't
>do the same thing.  More importantly, this is a X11 shell script
>with an Imakefile with all the predefined rules pointing to cpp
>already.
>
>If m4 is the correct choice, why didn't MIT choose to use it?

Dunno.  They may switch to using the DECUS C preprocessor, which comes
on recent (and perhaps not-so-recent) X11 source tapes, which means
they'll no longer be depending so much on the kindness of strangers. 
You might want to look into doing the same.