Udostępnij za pomocą


Ostrzeżenie kompilatora (poziom 1) C4742

Zmienna ma inne wyrównanie w pliku "file1" i "file2": number1 i number2

Uwagi

Zmienna zewnętrzna, do którego odwołuje się odwołanie lub zdefiniowana w dwóch plikach, ma różne wyrównanie w tych plikach.

To ostrzeżenie jest emitowane, gdy kompilator stwierdza, że alignof dla zmiennej w pliku file1 różni się od alignof zmiennej w pliku file2. Może to być spowodowane użyciem niezgodnych typów podczas deklarowania zmiennej w różnych plikach lub niezgodności #pragma pack w różnych plikach.

Aby rozwiązać to ostrzeżenie, użyj tej samej definicji typu lub użyj różnych nazw zmiennych.

Aby uzyskać więcej informacji, zobacz pack i alignof operator.

Przykład

Jest to pierwszy plik, który definiuje typ.

// C4742a.c
// compile with: /c
struct X {
   char x, y, z, w;
} global;

Poniższy przykład generuje C4742.

// C4742b.c
// compile with: C4742a.c /W1 /GL
// C4742 expected
extern struct X {
   int a;
} global;

int main() {
   global.a = 0;
}