www.delorie.com/djgpp/v2faq/faq22_10.html   search  
Node:0xfe+0x20, Next:, Previous:Cross-DJGPP, Up:Miscellany

22.10 GCC says "garbage at end of number"

Q: There is a severe bug in GCC: it says "garbage at end of number" for this line:

 i = 0xfe+0x20;

Ain't it silly that such a great compiler would fail so miserably?

A: That's not a bug, that's a feature of the ANSI C language definition. By ANSI rules, the above expression is a single preprocessing token, unless you place whitespace in front of the plus sign. The reason for this seemingly counterintuitive feature is the syntax of floating-point constants in which letters `e' and `E' followed immediately by a sign signal a decimal exponent. You can use the -traditional compiler switch to turn this feature off (however, it will also turn off a plethora of other ANSI features; see the GCC docs for details).

Judging by the published draft, this is unchanged even in the forthcoming C9X standard.



  webmaster   donations   bookstore     delorie software   privacy  
  Copyright 2001   by Eli Zaretskii     Updated Apr 2001