FIX: C1001: reg86.c:1.26, line 3154, Converting Short to CharLast reviewed: September 18, 1997Article ID: Q115534 |
|
1.00
WINDOWS
kbtool kbfixlist kbbuglist
The information in this article applies to:
SYMPTOMSUsing global register and global code optimization when converting a short variable to a character, illustrated in the sample source code below (in the "MORE INFORMATION" section), causes the compiler to generate the following error:
fatal error C1001: internal compiler error
(compiler file '@(#)reg86.c:1.26', line 3154)
RESOLUTIONThere are three workarounds to this problem:
STATUSMicrosoft has confirmed this to be a problem in the Microsoft products listed above. This problem was corrected in Visual C++ version 1.5.
MORE INFORMATIONThe following sample code can be used to demonstrate this problem:
Sample Code
/* Compile options needed: /Oge /AS /c
*/
typedef unsigned char BYTE;
typedef unsigned short BOOL;
typedef unsigned short WORD;
typedef unsigned BITS;
typedef BYTE RX;
typedef BYTE RY;
typedef struct _rrc
{
BYTE ryTop;
BYTE rxRight;
BYTE ryBottom;
} RRC;
typedef struct _wnd
{
WORD id;
BITS style:14;
BITS fCursorOn:1;
BITS fEnabled:1;
WORD rgwExtra[1];
} WND;
typedef WND *PWND;
void far pascal BltRrc(PWND, RX, RY, BYTE, BYTE, RX, RY);
void ScrollListBox(PWND pwnd,short dry,BOOL fKillOld)
{
WORD iszTop;
RRC rrc;
WORD iszBottom;
short iszNewTop;
short iszNewBottom;
WORD ryBottom;
iszTop = pwnd->rgwExtra[1+3];
ryBottom = rrc.ryBottom;
iszBottom = iszTop + ryBottom - 1;
iszNewTop = iszTop + dry;
iszNewBottom = iszBottom + dry;
dry = iszNewTop - iszTop;
BltRrc(pwnd, 0, 0, rrc.rxRight, (BYTE) (ryBottom - dry),
0, (BYTE) dry);
}
|
Additional reference words: 8.00 1.00
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |