Subject: #line pre-processor bug in B17.0 on NT4.0
From: [email-masked] ("Kenneth A.Giusti")

9 Jan 1997 12:05:42 -0800
Sender: [email-masked]
Approved: [email-masked]
Distribution: cygnus
Message-ID: <[email-masked]>
Original-To: [email-masked]
Original-Sender: [email-masked]

When using MSDOS-style pathnames with a #line directive, the path
separator \ is being treated as the escape character.  This is
different from the way MSDOS pathnames used by the #include directive
are preprocessed.

Example:

The following simple C code:

#include "C:\home\Administrator\temp.h"
#include "\home\Administrator\temp2.h"

int main()
{
#line 255 "C:\home\Administrator\temp.h"
  printf( STRING );
#line 255 "\home\Administrator\temp.h"
  return( 0 );
}

Preprocesses (using gcc -E) to:

# 1 "C:\\home\\Administrator\\temp.h" 1

# 2 "temp.c" 2

# 1 "\\home\\Administrator\\temp2.h" 1

# 3 "temp.c" 2

int main()
{
# 254 "C:homeAdministrator\011emp.h"    <<<<<BUG!

  printf( "Hello, Planet!\n"  );
# 254 "homeAdministrator\011emp.h"      <<<<<BUG!

  return( 0 );
}

When including the files temp.h and temp2.h using the MSDOS pathname
format, the preprocessor correctly escapes the path separators.  
However, when using the #line directive (see <<<<<BUG! above), the
pathname separator is treated as an escape, which results in an
invalid path.

Seems to me that #line should act line #include does.  At the very
least, they should be consistent.

Please excuse me if this issue has already been addressed, I didn't
see it on the FAQ, and I've yet to join the mailing list....

-- K
______________________________________________________________________
Kenneth A. Giusti                  Agranat Systems, Inc.
Principal Software Engineer        1345 Main Street, Waltham MA 02154
[email-masked]                 (617) 893-7868  x32

 ** Specialists in Data Communications/Embedded Systems Development **
                     http://www.agranat.com

-
For help on using this list, send a message to
"[email-masked]" with one line of text: "help".