编译器警告(等级 4)C4366
一元“operator”运算符的结果可能未对齐
如果由于打包而无法对齐结构成员,编译器将在该成员的地址分配给对齐指针时发出警告。 默认情况下,所有指针都对齐。
若要解析 C4366,请更改结构的对齐方式,或使用 __unaligned 关键字声明指针。
有关详细信息,请参阅 __unaligned 和包。
示例
下面的示例生成 C4366。
// C4366.cpp
// compile with: /W4 /c
// processor: IPF x64
#pragma pack(1)
struct X {
short s1;
int s2;
};
int main() {
X x;
short * ps1 = &x.s1; // OK
int * ps2 = &x.s2; // C4366
}