Aviso do compilador (nível 4) C4841

extensão não padrão usada: designador de membro composto usado em offsetof

Comentários

Se você usar offsetof(T, m), em que m é um designador de membro composto, o compilador gerará um aviso ao compilar com a opção /Wall.

Esse aviso é novo no Visual Studio 2017 versão 15.3 e está desativado por padrão. Use /Wall para habilitar todos os avisos que estão desativados por padrão ou /w14841 para habilitar C4841 como um aviso de nível 1. Para obter mais informações, confira Avisos do compilador desativados por padrão. Para obter informações sobre como desabilitar avisos por versão do compilador, consulte Avisos do compilador por versão do compilador.

Exemplo

O seguinte código está malformado e pode causar falhas em runtime:

struct A {
   int arr[10];
};

// warning C4841: non-standard extension used: compound member designator in offsetof
constexpr auto off = offsetof(A, arr[2]);

Para corrigir o problema, altere o código para não usar offsetof com um designador de membro composto.