Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!cmcl2!husc6!mit-eddie!genrad!decvax!mcnc!rti-sel!dg_rtp!meissner From: meissner@dg_rtp.UUCP (Michael Meissner) Newsgroups: comp.lang.c Subject: Re: Why all this fuss about CTRL(X) ?? Message-ID: <778@dg_rtp.UUCP> Date: Wed, 31-Dec-86 08:08:42 EST Article-I.D.: dg_rtp.778 Posted: Wed Dec 31 08:08:42 1986 Date-Received: Thu, 1-Jan-87 03:54:18 EST References: <1955@watdragon.UUCP> <184@devon.UUCP> <1581@ihlpl.UUCP> <1971@emory.UUCP> Reply-To: meissner@dg_rtp.UUCP (Michael Meissner) Distribution: world Organization: Data General (Languages @ Research Triangle Park, NC.) Lines: 19 In article <1971@emory.UUCP> arnold@emory.UUCP (Arnold D. Robbins {EUCC}) writes: > I hope somebody hasn't beat me to this. The whole fuss about > > #define CTRL(X) ('X' & 037) /* ascii! */ > > in the Reiser cpp not being doable in ANSI C can be answered this way: > > #define CTRL(X) (' ## X ## ' & 037) /* ascii only */ > > which uses the token concatenation operator to produce the character > constant. .... This will not work with the ANSI preprocessor, because the ANSI preprocessor only deals with tokens, not atoms (except for string-izing). The above would try to create a character constant with 8 characters in it. -- Michael Meissner, Data General ...mcnc!rti-sel!dg_rtp!meissner