共用方式為


編譯程式警告 (層級 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