分享方式:


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