gpt4 book ai didi

c - 为什么排除标准库后没有报错?

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:34 24 4
gpt4 key购买 nike

作为 C 的初学者,我正在尝试一些东西,所以我排除了标准库 <stdio.h>仍然没有错误。谁能解释一下?

示例代码如下:

main()
{
printf("hello, world!\n");
}

无论有没有库,该程序都可以正常工作。为什么?

最佳答案

TL;DR -- 您排除的是头文件,而不是标准库。


如果您排除函数具有前向声明的头文件,您将收到一条警告,肯定会提到函数的“隐式声明”。

在那种情况下(根据最新标准无效),该函数将被假定返回 int 并且不会检查传递的参数数量。

但是,默认情况下,从您的源代码生成的目标文件与默认的 C 库 libc 链接,该库具有函数定义。在这种情况下,函数返回类型与隐式 情况匹配,因此链接器很乐意将目标文件链接在一起。

因此,它成功地完成了链接并且工作相同

也就是说,main()应该是int main(void),至少符合标准。

关于c - 为什么排除标准库后没有报错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35262148/

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