Microsoft KB Archive/65744

{|
 * width="100%"|

BUG: Compiler Fails to Generate Symbolic Info for ELSE IF

 * }

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 &quot;else&quot; and &quot;if&quot; 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

Issue type :

Technology : kbVCsearch kbAudDeveloper kbCVCComp