Aviso do compilador (nível 1) C4742
'variable' tem alinhamento diferente in 'file1' e 'file2': number1 e number2
Uma variável externa referenciada ou definida em dois arquivos tem alinhamentos diferentes nesses arquivos.
Comentários
Esse aviso é emitido quando o compilador descobre que alignof
para a variável no file1 é diferente de alignof
para a variável no file2. Isso pode ser causado pelo uso de tipos incompatíveis ao declarar variável em arquivos diferentes ou pelo uso de #pragma pack
não correspondentes em arquivos diferentes.
Para resolver esse aviso, use a mesma definição de tipo ou use nomes diferentes para as variáveis.
Para mais informações, consulte pack
e alignof
operador.
Exemplo
Este é o primeiro arquivo que define o tipo.
// C4742a.c
// compile with: /c
struct X {
char x, y, z, w;
} global;
A seguinte amostra gera C4742.
// C4742b.c
// compile with: C4742a.c /W1 /GL
// C4742 expected
extern struct X {
int a;
} global;
int main() {
global.a = 0;
}