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

ID Number: Q61308

5.10 6.00 6.00a 6.00ax | 5.10 6.00 6.00a

MS-DOS | OS/2

buglist5.10 buglist6.00 buglist6.00a buglist6.00ax

Summary:

SYMPTOMS

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.

STATUS

Microsoft has confirmed this to be a problem in C versions 5.1,

6.0, 6.0a, and 6.0ax. We are researching this problem and will post

new information here as it becomes available.

More Information:

The sample code below was used to generate the following listing

files, which illustrate this problem.

This 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, and lists only the number of

errors. For example:

Line# Source Line Microsoft C Compiler Version 6.00

1 #include <stdio.h>

2

3 #line 1 "test"

4

5 void main()

6 {

7

8 intt x; /* error is here */

9

10 printf("hello");

11 }

3 errors detected

If the filename label ("test" 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

Sample Code

-----------

/* Compile options needed: /Fs

*/

#include <stdio.h>

void main()

{

intt x; /* the error is here */

printf("hello");

}

Additional reference words: 5.10 6.00 6.00a 6.00ax