Q61308: /Fs Does Not Locate Error When #line Directive Is Specified

Article: Q61308
Product(s): See article
Version(s): 5.10 6.00 | 5.10 6.00
Operating System(s): MS-DOS | OS/2
Keyword(s): ENDUSER | buglist6.00 | mspl13_c
Last Modified: 11-JUL-1990

When the #line preprocessor directive is used with a filename label,
/Fs generates a source listing with the correct error count but fails
to correctly locate the errors in the listing file.

Sample Code
-----------

#include <stdio.h>
#line 1 "hello"

void main()
{
   intt x; /* the error is here */

   printf("hello");
}

Below is the normal source listing generated by the compiler:

 Line#    Source Line          Microsoft C Compiler Version 6.00

      1
      2 #include <stdio.h>
      3
      4 void main()
      5 {
      6    intt x; /* the error is here */
***** test.c(6) : error C2065: 'intt' : undefined
***** test.c(6) : error C2146: syntax error : missing ';' before ...
***** test.c(6) : error C2065: 'x' : undefined
      7
      8    printf("hello");
      9 }

3 errors detected

When compiled with a #line directive and a filename label, the source
listing fails to indicate the error, only the number of errors. For
example:

 Line#    Source Line          Microsoft C Compiler Version 6.00

      1 #include <stdio.h>
      2
      3 #line 1 "foobar"
      4
      5 void main()
      6 {
      7
      8 intt x; /* error is here */
      9
     10    printf("hello");
     11 }

3 errors detected

If the filename label ("foobar" in this case) is not specified, the
source listing contains the error messages, but they are not in the
correct place. For example:

 Line#    Source Line          Microsoft C Compiler Version 6.00

      1
      2 #include <stdio.h>
      3 #line 1
      4
***** test.c(4) : error C2065: 'intt' : undefined
***** test.c(4) : error C2146: syntax error : missing ';' before ...
***** test.c(4) : error C2065: 'x' : undefined
      5 void main()
      6 {
      7    intt x; /* the error is here */
      8
      9    printf("hello");
     10 }

3 errors detected

Microsoft has confirmed this to be a problem with C version 6.00. We
are researching this problem and will post new information here as it
becomes available.