编译器警告(等级 1)C4742
“variable”在 file1 和 file2 中有不同的对齐方式: number1 和 number2
在两个文件中引用或定义的外部变量在这些文件中具有不同的对齐方式。
注解
此警告在编译器发现 file1 中的变量的 alignof
与 file2 中的变量的 alignof
不同时发出。 这可能是由于在不同文件中声明变量时使用不兼容的类型,或在不同文件中使用不匹配的 #pragma pack
造成的。
若要解决此警告,请为变量使用相同的类型定义或使用不同的名称。
示例
这是定义类型的第一个文件。
// C4742a.c
// compile with: /c
struct X {
char x, y, z, w;
} global;
以下示例生成 C4742。
// C4742b.c
// compile with: C4742a.c /W1 /GL
// C4742 expected
extern struct X {
int a;
} global;
int main() {
global.a = 0;
}