Compartir vía


Advertencia del compilador (nivel 4) C4841

extensión no estándar usada: designador de miembro compuesto utilizado en offsetof

Comentarios

Si usa offsetof(T, m), donde m es un designador de miembro compuesto, el compilador genera una advertencia al compilar con la opción /Wall.

Esta advertencia es nueva en la versión 15.3 de Visual Studio 2017 y está desactivada de manera predeterminada. Use /Wall para habilitar todas las advertencias que están desactivadas de manera predeterminada o /w14841 para habilitar C4841 como advertencia de nivel 1. Para más información, consulte Advertencias del compilador desactivadas de manera predeterminada. Para información sobre cómo deshabilitar las advertencias por versión del compilador, consulte Advertencias del compilador por versión del compilador.

Ejemplo

El código siguiente tiene un formato incorrecto y podría provocar un bloqueo en tiempo de ejecución:

struct A {
   int arr[10];
};

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

Para corregir el problema, cambie el código para que no se use offsetof con un designador de miembro compuesto.