Compiler Warning (level 4) C4841
non-standard extension used: compound member designator used in
offsetof
Remarks
If you use offsetof(T, m)
, where m
is a compound member designator, the compiler generates a warning when you compile with the /Wall
option.
This warning is new in Visual Studio 2017 version 15.3, and is off by default. Use /Wall
to enable all warnings that are off by default, or /w14841
to enable C4841 as a level 1 warning. For more information, see Compiler warnings that are off by default. For information on how to disable warnings by compiler version, see Compiler warnings by compiler version.
Example
The following code is ill-formed and could potentially cause a crash at runtime:
struct A {
int arr[10];
};
// warning C4841: non-standard extension used: compound member designator in offsetof
constexpr auto off = offsetof(A, arr[2]);
To fix the issue, change the code to not use offsetof
with a compound member designator.