编译器警告(等级 1)C4401

“bitfield”:成员为位域

内联程序集代码尝试访问位域成员。 内联程序集无法访问位域成员,因此使用位域成员之前的最后一个打包边界。

要避免此警告,请先将位域转换为适当的类型,然后再在内联程序集代码中进行引用。 下面的示例生成 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;
   }
   */
}