BUG: Compiler Fails to Generate Symbolic Info for ELSE IF

Last reviewed: July 17, 1997
Article ID: Q65744
6.00 6.00a 6.00ax 7.00 | 6.00 6.00a | 1.00 1.50
MS-DOS                 | OS/2       | WINDOWS
kbtool kbbuglist

The information in this article applies to:

  • The Microsoft C/C++ Compiler (CL.EXE), included with:

        - Microsoft C for MS-DOS, versions 6.0, 6.0a, and 6.0ax
        - Microsoft C for OS/2, versions 6.0 and 6.0a
        - Microsoft C/C++ for MS-DOS, versions 7.0
        - Microsoft Visual C++ for Windows, versions 1.0 and 1.5
    

SYMPTOMS

If the sample code below is compiled for debugging (/Zi) with the products listed above, the debugger does not stop at breakpoints placed on the ELSE IF line of code. Also, any attempt to step onto the line using the trace or step command will skip over this line as if no executable code was associated with it.

CAUSE

The compiler is not generating the correct line number information.

RESOLUTION

To work around the problem, place the "else" and "if" on separate lines. For example:

   else
      if (i==7)

instead of

   else if (i==7)

STATUS

Microsoft has confirmed this to be a problem in the products listed at the beginning of this article. It is not likely that the behavior will change because the problem is easy to work around and is not common.

MORE INFORMATION

As can be seen in the debugger by switching into mixed source/assembly mode, there is executable code associated with the ELSE IF statement. And, if a breakpoint is placed on one of the assembly instructions associated with the ELSE IF line, execution can stop on that instruction demonstrating that the code is being executed.

Sample Code

/* Compile options needed: /Zi /Od
*/

void main(void)
{
   int i=100;
   if (i==2);
   else if(i==7);  /* cannot stop on this line */
}


Additional reference words: 1.00 1.50 6.00 6.00a 6.00ax 7.00 8.00 8.00c
KBCategory: kbtool kbbuglist
KBSubcategory: CLIss
Keywords : kb16bitonly


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: July 17, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.