Предупреждение компилятора (уровень 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
с составным конструктором элементов.