Freigeben über


Compilerwarnung (Ebene 1) C4401

'Bitfeld' : Element ist Bitfeld

Inlineassemblycode versucht, auf ein Bitfeldelement zuzugreifen. Inlineassembly kann nicht auf Bitfeldmember zugreifen, sodass die letzte Verpackungsgrenze vor der Verwendung des Bitfeldelements verwendet wird.

Um diese Warnung zu vermeiden, wandeln Sie das Bitfeld in einen geeigneten Typ um, bevor Sie den Verweis im Inlineassemblycode vornehmen. Im folgenden Beispiel wird C4401 generiert:

// C4401.cpp
// compile with: /W1
// processor: x86
typedef struct bitfield {
   signed bit : 1;
} mybitfield;

int main() {
   mybitfield bf;
   bf.bit = 0;
   __asm {
      mov bf.bit,0;   // C4401
   }

   /* use the following __asm block to resolve the warning
   int i = (int)bf.bit;
   __asm {
      mov i,0;
   }
   */
}