컴파일러 경고(수준 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;
}
*/
}