編譯程式警告 (層級 4) C4841
已使用非標準延伸模組:
offsetof
中使用的複合成員指示項
備註
如果您使用 offsetof(T, m)
,其中 m
是複合成員指示項,則編譯程式會在使用 /Wall
選項進行編譯時產生警告。
此警告是 Visual Studio 2017 15.3 版的新功能,且預設為關閉。 使用 /Wall
來啟用默認關閉的所有警告,或 /w14841
啟用 C4841 作為層級 1 警告。 如需詳細資訊,請參閱 默認關閉的編譯程式警告。 如需如何依編譯程式版本停用警告的資訊,請參閱 編譯程式版本的編譯程式警告。
範例
下列程式代碼格式不正確,而且可能會在運行時間造成當機:
struct A {
int arr[10];
};
// warning C4841: non-standard extension used: compound member designator in offsetof
constexpr auto off = offsetof(A, arr[2]);
若要修正此問題,請將程式代碼變更為不要與複合成員指示項搭配使用 offsetof
。