ID Number: Q65305
6.00 6.00a | 6.00 6.00a
MS-DOS | OS/2
buglist6.00 fixlist6.00a
Summary:
SYMPTOMS
The Microsoft C Compiler version 6.0 produces the following internal
compiler error when the sample program below is compiled with /Oel:
fatal error C1001: Internal Compiler Error
(compiler file '@(#)regMD.c:1.100', line 4634)
Contact Microsoft Product Support Services
RESOLUTION
The following are possible workarounds:
1. Do the incrementing of the index of the array outside the
printf() using a temporary variable, and use that variable as
the index inside the printf().
2. Compile without the /Oe or /Ol compile option by NOT
including the option on the compile line or using the optimize
or loop_opt pragma.
3. Compile with the /qc (quick compile) option.
STATUS
Microsoft has confirmed this to be a problem in C version 6.0. This
problem was corrected in C version 6.0a.
More Information:
Sample Code
-----------
/* Compile options needed: /Oel
*/
#include <stdio.h>
extern FILE *ftable;
extern int nrules;
extern short *rrhs;
output_rule_data()
{
int i;
int j,k;
for (i=1;i<nrules;i++)
{
k = i+1; // Use k for i+1 in the next line as a workaround
fprintf(ftable,"%6d",rrhs[i+1] - rrhs[i] - 1);
}
}
Additional reference words: 6.00 6.00a