Article: Q62310
Product(s): See article
Version(s): 6.00 | 6.00
Operating System(s): MS-DOS | OS/2
Keyword(s): ENDUSER | buglist6.00 | mspl13_c
Last Modified: 22-JUN-1990
The code below, when compiled by Microsoft C 6.00 with default
optimizations for the compact or large memory models, produces the
following error message:
fatal error C1001: Internal Compiler Error
(compiler file '@(#)newcode.c:1.87', line 604)
Contact Microsoft Product Support Services
Sample Code
-----------
typedef unsigned long ULONG;
typedef struct
{
ULONG a;
} A;
typedef struct
{
A b;
} B;
B far *c;
void test( void )
{
// Making two separate assignments is OK
//
ULONG ok_1 = (c->b.a);
ULONG ok_2 = (ULONG)c + ok_1;
// But performing the same computation in one
// assignment causes an internal compiler error.
//
ULONG bomb = (ULONG)c + (c->b.a);
}
The error may be worked around by splitting the assignment into two
separate operations, as seen in the sample code.
Microsoft has confirmed this to be a problem in C version 6.00. We are
researching this problem and will post new information here as it
becomes available.