编译器警告(等级 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
与复合成员指示符一起使用。