Partager via


Avertissement du compilateur (niveau 1) C4401

'bitfield' : le membre est un champ de bits

Le code d’assembly inline tente d’accéder à un membre de champ binaire. L’assembly inline ne peut pas accéder aux membres de champ binaire. Par conséquent, la dernière limite de compression avant l’utilisation du membre de champ binaire est utilisée.

Pour éviter cet avertissement, convertissez le champ de bits en type approprié avant d’effectuer la référence dans le code d’assembly inline. L’exemple suivant génère l’erreur 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;
   }
   */
}