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