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