osd7@homxa.UUCP (Orlando Sotomayor-Diaz) (04/24/85)
From: Orlando Sotomayor-Diaz (The Moderator) <cbosgd!std-c>
mod.std.c Digest Wed, 24 Apr 85 Volume 5 : Issue 8
Today's Topics:
comments in pre-processor lines
CTRL(x) in the ANSI standard
----------------------------------------------------------------------
Date: Tue, 23 Apr 85 00:25:06 cst
From: ihnp4!ut-sally!cyb-eng!bc
Subject: comments in pre-processor lines
I am relatively new to the net, and perhaps I have missed some dialogue,
but it just seems crazy to me to impose a free-format comment mechanism
like /* */ onto preprocessor lines. As stated on p. 207 of K&R, "These
lines have syntax independent of the rest of the language; ...". What is
a preprocessor to do if he sees a /* and no */? His scanning stops at the
end of the current line. Does he pick up *inside comment* on the next
preprocessor line? This is ridiculous!
Nowhere I have been able to find is /* */ considered to be white space by
a *preprocessor*! All those characters are just characters to him/her.
I will let Dennis Ritchie speak for himself (I haven't seen any comment by
him on this topic), but if I were to guess how he would have implemented
the idea of comments on preprocessor lines -- given their line-oriented,
relatively fixed-format structure, he would have suggested that anything
after a second # on the same line be considered a comment. Certainly MY
vote would go for that.
So you say:
#ifdef VERBOSE
...
#endif #VERBOSE
Not so bad.
------------------------------
Date: Tue, 23 Apr 85 17:08:17 est
From: <ihnp4!decvax!mcnc!rtp47!gamma>
Subject: CTRL(x) in the ANSI standard
I just realized there is another method of supporting the CTRL macro
which I believe is in /usr/include/sys/types.h. It is somewhat longer
than the previous method of derefencing a string made from the argument,
but should work in case statements, and static initializations.
enum _CTRL_kludge {
_CTRL_A = 1, /* upper case control chars */
_CTRL_B,
_CTRL_C,
...
_CTRL_Y,
_CTRL_Z,
_CTRL_a = 1, /* handle lower case as well */
_CTRL_b,
_CTRL_c,
....
_CTRL_y,
_CTRL_z
};
#define CTRL(arg) ((int) _CTRL_ ## arg)
Thus, instead of using string-izing, it uses token pasting, and it could
be easily adapted to work on EBCDIC as well (if it supports the notion of
control characters), which the old 'x' & 077 does not.
Michael Meissner
Data General Corporation
...ihnp4!mcnc!rti-sel!rtp47!meissner
------------------------------
End of mod.std.c Digest - Wed, 24 Apr 85 08:35:15 EST
******************************
USENET -> posting only through cbosgd!std-c.
ARPA -> ... through cbosgd!std-c@BERKELEY.ARPA (NOT to INFO-C)
In all cases, you may also reply to the author(s) above.