Advertencia del compilador (nivel 1) C4742
'variable' tiene una alineación diferente en 'file1' y 'file2': number1 y number2
Una variable externa a la que se hizo referencia o se definió en dos archivos tiene una alineación diferente en esos archivos.
Comentarios
Esta advertencia se genera cuando el compilador encuentra que alignof
para la variable de file1 difiere de alignof
para la variable en file2. Esto puede deberse al uso de tipos incompatibles al declarar la variable en archivos diferentes o al uso de #pragma pack
no coincidentes en archivos diferentes.
Para resolver esta advertencia, use la misma definición de tipo o use nombres diferentes para las variables.
Para más información, consulte los artículos sobre pack
y el operadoralignof
.
Ejemplo
Este es el primer archivo que define el tipo.
// C4742a.c
// compile with: /c
struct X {
char x, y, z, w;
} global;
El ejemplo siguiente genera la advertencia C4742.
// C4742b.c
// compile with: C4742a.c /W1 /GL
// C4742 expected
extern struct X {
int a;
} global;
int main() {
global.a = 0;
}