From: Kevin V. <ke...@vi...> - 2001-07-05 20:30:44
|
On 05-Jul-2001 Johan Knol wrote: > It works perfectly for me, but doesn't solve bug #435127 Actually, #435127 is not a bug, though it pointed some out. Firstly, the result of the '##' macro operator must be a valid preprocessing token. '//' is not a valid pre-processing token. According to the ISO spec 6.10.3.3.3, the result of this is undefined; the new cpp throws a warning and outputs the two tokens seperated by a space (which is admittedly odd, but is what gcc 3.0 does (and is not what earlier revs of gcc did)). The old cpp got into a deeply confused state and threw everything away with no warning. Secondly, even if it did work as expected (which it isn't required by the spec to do), the result would be a syntax error; comments are required to be removed before macro substitutions, not after, so you'd end up passing '//' into the lexer, which would choke. Peace, Kevin |