gpt4 book ai didi

c - 在 C 语言中,当我在另一个文件中声明一个不同数据类型的全局变量时,为什么没有出现错误?

转载 作者:太空狗 更新时间:2023-10-29 16:43:40 26 4
gpt4 key购买 nike

我试过下面的代码:

文件1.c:

int x;

文件2.c:

extern char x;
main()
{
x=10;
....
....
}

并编译为

$gcc 文件1.c 文件2.c

我没有得到任何错误,但我期待一个错误。

最佳答案

File.c 中,您向编译器保证xchar 类型。由于每个翻译单元都是单独编译的,编译器无法验证这一点,并且相信你的话。并且链接器不进行任何类型检查。你最终得到了一个没有错误构建的无效程序。

这就是您应该使用头文件的原因。如果 File1.cFile2.c 都从同一个头文件中得到了 xextern 声明,那么你编译 File1.c 时会出错(因为定义与声明不匹配)。 [帽子提示@SteveJessop]

关于c - 在 C 语言中,当我在另一个文件中声明一个不同数据类型的全局变量时,为什么没有出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15566453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com