From: Morten Welinder Date: Mon, 15 May 1995 18:52:59 +0200 To: pkoning AT chipcom DOT com Cc: djgpp AT sun DOT soe DOT clarkson DOT edu Subject: Re: BUG or what?! -- No I know C is a screwed up language, but this I just can't believe. Where does it say that? And if it does say that, does anyone know why? I can't think of any reason in parsing or anywhere else that would justify such a braindamaged rule. paul >The C language requires you to have whitespace between a hex-number >ending in "e" and a subsequent "+" or "-". > >Morten From the Gcc manual: * GNU C complains about program fragments such as `0x74ae-0x4000' which appear to be two hexadecimal constants separated by the minus operator. Actually, this string is a single "preprocessing token". Each such token must correspond to one token in C. Since this does not, GNU C prints an error message. Although it may appear obvious that what is meant is an operator and two values, the ANSI C standard specifically requires that this be treated as erroneous. A "preprocessing token" is a "preprocessing number" if it begins with a digit and is followed by letters, underscores, digits, periods and `e+', `e-', `E+', or `E-' character sequences. To make the above program fragment valid, place whitespace in front of the minus sign. This whitespace will end the preprocessing number.