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