Microsoft KB Archive/125799

= FIX: C2443 Using Structure Member Operand in _asm Block =

Article ID: 125799

Article Last Modified on 7/5/2005

-

APPLIES TO


 * Microsoft Visual C++ 1.0 Professional Edition
 * Microsoft Visual C++ 2.0 Professional Edition
 * Microsoft Visual C++ 2.1
 * Microsoft Visual C++ 4.0 Standard Edition
 * Microsoft Visual C++ 4.1 Subscription
 * Microsoft Visual C++ 4.2 Enterprise Edition
 * Microsoft Visual C++ 4.2 Professional Edition
 * Microsoft Visual C++ 5.0 Enterprise Edition
 * Microsoft Visual C++ 5.0 Professional Edition
 * Microsoft Visual C++ 1.0 Professional Edition
 * Microsoft Visual C++ 1.5 Professional Edition
 * Microsoft Visual C++ 1.52 Professional Edition

-



This article was previously published under Q125799



SYMPTOMS
Under the four conditions described in this article, the following compiler error is generated:

test.cpp(linenumber) : error C2443: operand size conflict

Here linenumber is the assembly instruction in TEST.CPP file that meets the following conditions. This error occurs when the following four conditions are met:


 * You're using inline assembly.
 * The size of the source operand on an assembly instruction is different from the size of the destination operand.
 * The source operand is a member of a structure.
 * The PTR operator is used to force the operand to the size required.



RESOLUTION
If you are using C++, declare a reference variable initialized with the structure member. Use the reference variable as the source operand in the assembly instruction as shown in this sample code:

Sample Code
/* Compile options needed: /Tp

truct Test {

int nInt; } test1;

void main(void) { __asm mov  bh, BYTE PTR test1.nInt  /* error occurs here */

int & nTest = test1.nInt;  /*  these lines work  */

__asm mov  bh, BYTE PTR nTest   /*  these lines work  */ } If you are using C, use a local variable instead of a reference variable.



STATUS
This bug was corrected in Microsoft Visual C++, version 6.0.

Additional query words: CPP CXX MASM assembler macro

Keywords: kbbug kbfix kbvc600fix KB125799

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.