Compartir vía


Advertencia del compilador (nivel 1) C4401

"bitfield": el miembro es un campo de bits

El código de ensamblado insertado intenta tener acceso a un miembro de campo de bits. El ensamblado insertado no puede acceder a los miembros de campo de bits, por lo que se usará el último límite de empaquetado antes de usar el miembro de campo de bits.

Para evitar esta advertencia, convierta el campo de bits en un tipo adecuado antes de hacer la referencia en el código de ensamblado insertado. El ejemplo siguiente genera la advertencia C4401:

// 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;
   }
   */
}