Поделиться через


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