stdio.h实现了printf函数?

描述

我们平时包含的 stdio.h 头文件,里面是不是实现了 printf 函数?

为什么会有这个疑问?因为每次使用 printf,就得包含 stdio.h ,这就导致很多同学误以为,stdio.h 里面实现了 printf。

实际上并不是,这里就涉及了头文件和库的区别。

头文件一般存放大家都要用的东西,比如函数的声明,结构体的声明,命名新的类型等等。

stdio.h 头文件,里面也只是声明了一下 printf 函数,作用就是告诉编译器,printf 是个函数,编译的时候不要报错。

至于 printf 的实现,在一个名字类似于 libc.so 这样的文件中。

.so 是 Linux 下的动态库文件,里面存放了各个函数的实现,不过他也属于二进制文件,想要看 printf 的具体实现,还得去其他地方找源码。

所以,千万不要再以为,包含 stdio.h 是因为里面实现了 printf。

那头文件里面能不能实现函数?反正头文件也只是在预处理的时候展开,想要在里面写什么都行。

不过会有这样的情况发生。

比如 1.h 实现了函数 test,1.c 和 2.c 都包含了 1.h,编译的时候,就会提示函数 test 重复定义。

还有一个类似的问题,头文件里面能不能定义变量,这个问题大家怎么看,如果你也遇到过这样的情况,欢迎在评论区交流。

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分