Condividi tramite


Avviso del compilatore (livello 4) C4841

estensione non standard usata: designatore membro composto usato in offsetof

Osservazioni:

Se si usa offsetof(T, m), dove m è un designatore membro composto, il compilatore genera un avviso quando si compila con l'opzione /Wall .

Questo avviso è una novità di Visual Studio 2017 versione 15.3 e disattivato per impostazione predefinita. Usare /Wall per abilitare tutti gli avvisi disattivati per impostazione predefinita o /w14841 per abilitare C4841 come avviso di livello 1. Per altre informazioni, vedere Avvisi del compilatore disattivati per impostazione predefinita. Per informazioni su come disabilitare gli avvisi in base alla versione del compilatore, vedere Avvisi del compilatore per versione del compilatore.

Esempio

Il codice seguente non è valido e potrebbe causare un arresto anomalo in fase di esecuzione:

struct A {
   int arr[10];
};

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

Per risolvere il problema, modificare il codice in modo che non venga usato offsetof con un designatore membro composto.