This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: preprocessor bug(?)


On Thursday, November 7, 2002, at 04:30  PM, Zack Weinberg wrote:

On Thu, Nov 07, 2002 at 04:19:31PM -0800, Dale Johannesen wrote:
One of our users just did this:

// comment, space character follows the backslash:\
main() {
}

gcc ignores the space character, which causes the comment to eat the
next line.
That's wrong, isn't it?
No, that's an intentional feature.  From the manual:

  3. Continued lines are merged into one long line.
       ....
     If there is white space between a backslash and the end of a line,
     that is still a continued line.  However, as this is usually the
     result of an editing mistake, and many compilers will not accept
     it as a continued line, GCC will warn you about it.

Note especially the last paragraph.  The user did get a warning,
didn't they?
No.

I understand this is a feature in the case where the \<space> is not inside
a comment, and I think it's a useful one. But I believe the behavior described
above violates the standards in this case. Translation phase 2 is not supposed
to replace \<space>, and the // comment eats all characters (not tokens) up
to the end of the line. It looks to me like the program above is standard-conforming
and gcc miscompiles it.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]