编译器警告(等级 1)C4744

“var”在“file1”和“file2”中具有不同的类型:“type1”和“type2”

在两个文件中引用或定义的外部变量在这些文件中具有不同的类型。 若要解析,请使类型定义相同,或更改其中一个文件中的变量名称。

仅当使用 /GL 编译文件时才会发出 C4744。 有关详细信息,请参阅 /GL(全程序优化)

注意

C4744 通常发生在 C(而不是 C++)文件中,因为在 C++ 中,变量名称是用类型信息修饰的。 将(以下)示例编译为 C++ 时,将收到链接器错误 LNK2019。

示例

此示例包含第一个定义。

// C4744.c
// compile with: /c /GL
int global;

下面的示例生成 C4744。

// C4744b.c
// compile with: C4744.c /GL /W1
// C4744 expected
#include <stdio.h>

extern unsigned global;

main()
{
    printf_s("%d\n", global);
}