编译器警告(等级 1)C4742

“variable”在 file1 和 file2 中有不同的对齐方式: number1 和 number2

在两个文件中引用或定义的外部变量在这些文件中具有不同的对齐方式。

注解

此警告在编译器发现 file1 中的变量的 alignof 与 file2 中的变量的 alignof 不同时发出。 这可能是由于在不同文件中声明变量时使用不兼容的类型,或在不同文件中使用不匹配的 #pragma pack 造成的。

若要解决此警告,请为变量使用相同的类型定义或使用不同的名称。

有关详细信息,请参阅 packalignof

示例

这是定义类型的第一个文件。

// 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;
}