다음을 통해 공유


컴파일러 경고(수준 4) C4841

비표준 확장 사용: 복합 멤버 지정자 사용 offsetof

설명

offsetof(T, m)복합 멤버 지정자인 경우 m 옵션을 사용하여 컴파일 /Wall 할 때 컴파일러가 경고를 생성합니다.

이 경고는 Visual Studio 2017 버전 15.3의 새로운 기능이며 기본적으로 꺼져 있습니다. 기본적으로 꺼져 있는 모든 경고를 사용하거나 /w14841 C4841을 수준 1 경고로 사용하도록 설정하는 데 사용합니다/Wall. 자세한 내용은 기본적으로 꺼져 있는 컴파일러 경고를 참조하세요. 컴파일러 버전별 경고를 사용하지 않도록 설정하는 방법에 대한 자세한 내용은 컴파일러 버전별 컴파일러 경고를 참조하세요.

예시

다음 코드는 형식이 잘못되어 런타임에 충돌이 발생할 수 있습니다.

struct A {
   int arr[10];
};

// warning C4841: non-standard extension used: compound member designator in offsetof
constexpr auto off = offsetof(A, arr[2]);

이 문제를 해결하려면 복합 멤버 지정자와 함께 사용하지 offsetof 않도록 코드를 변경합니다.