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.