首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不包括<stdio.h>

不包括<stdio.h>
EN

Stack Overflow用户
提问于 2011-01-11 12:22:33
回答 6查看 4.5K关注 0票数 6

下面给定的程序在不包含<stdio.h>的情况下工作吗?为什么这是可行的?

代码语言:javascript
复制
int main()
{
    printf("integra");
    return 0;
}
EN

回答 6

Stack Overflow用户

发布于 2011-01-12 13:56:34

printf()的定义在libc.so中,即使您不包含头文件,动态链接器也会处理它。在编译时,printf()将是一个未定义的符号,它假定稍后可能会在libc中找到定义。头文件将只给出原型并抑制编译器(警告),声明在glibc中存在原型的定义。因此,基本上,包含头文件只是为了确保定义在我们的库中可用,以帮助开发人员。

票数 8
EN

Stack Overflow用户

发布于 2011-01-11 12:27:03

在旧标准中,未声明函数假定为int参数并返回值。您的char*具有与int相同的大小(32位),因此一切正常。

不要这样做。

票数 7
EN

Stack Overflow用户

发布于 2011-01-11 13:48:34

printf()仅在libc.so中定义

动态链接器将解析libc中的符号printf(),因为您没有将其包括在内

对于每个程序,libc在gcc中都是默认值

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4654147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档