0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

stdio.h实现了printf函数?

学益得智能硬件 来源:学益得智能硬件 2024-12-18 10:28 次阅读

我们平时包含的 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 重复定义。

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

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

    关注

    3

    文章

    4326

    浏览量

    62555
  • Stdio
    +关注

    关注

    0

    文章

    2

    浏览量

    7511
  • Printf
    +关注

    关注

    0

    文章

    83

    浏览量

    13642

原文标题:stdio.h 实现了 printf 函数?

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【敏矽微ME32G070开发板免费体验】使用JLINK的RTT功能实现类似串口printf打印功能

    收到这款敏矽微ME32G070开发板后,我发现我的这款板子是坏的,串口打印部分不能打印,我先烧录了demo文件夹里的串口打印printf函数 打开串口助手 却没有任何数据,我用万用表测量
    发表于 12-15 20:30

    51单片机中为什么很少出现printf的身影

    流,他能跟外部交互的,只有串口。 51单片机用的开发语言是C语言,虽然跟标准C有点区别,但是 printf 函数还是可以用的,只要修改 printf 的输
    的头像 发表于 12-03 10:46 246次阅读
    51单片机中为什么很少出现<b class='flag-5'>printf</b>的身影

    C语言中的头文件能不能重复包含

    C语言中的头文件能不能重复包含? 比如代码写成这样,stdio.h 连续包含了两次。 #include #include int main(){ printf("helloworld
    的头像 发表于 11-26 17:19 140次阅读

    C语言为什么不需要包含stdio.h

    我们在写单片机程序的时候,第一行都会包含 reg51.h,于是就有同学提出了疑问,为什么不需要包含 stdio.h
    的头像 发表于 10-29 15:48 308次阅读

    重定向fputc及putchar函数,但printf没有输出,为什么?

    重定向fputc及putchar函数,但printf没有输出 删除了drivers/drv_uart.c drv_uart.h 删除了文件rt-thread\\components
    发表于 07-18 07:44

    在全志H616核桃派开发板上进行基于WiringPi的IO控制

    的编译和运行方法,先在核桃派当前目录新建一个test.c文件,输入下面内容(该代码实现在终端打印“Hello WalnutPi信息”): #include<stdio.h>
    发表于 05-17 09:38

    Saturday只是一个枚举元素啊,而today是一个枚举变量,为什么他俩所占的内存空间大小是一样的? [

    #include \"stdio.h\" enum Season { spring, summer=100, fall=96, winter ,winter1
    发表于 05-10 07:07

    STM32CubeIDE中打印重定向报错怎么解决?

    HAL_UART_Transmit( huart1 , (uint8_t *) ch, 1, 0xFFFF);报错 printf重定向 报错../Core/Src/main.c:42:21: error: \'huart1\' undeclared 已添加stdio.h
    发表于 04-03 07:33

    STM32的疑难杂症之一:Printf的使用

    一、Printf简介Printf是一个标准的C库API,用来打印信息显示的。Printf的底层输出调用,在windows环境下是fputc函数,在GNUC环境下是__io_putcha
    的头像 发表于 04-02 08:09 3563次阅读
    STM32的疑难杂症之一:<b class='flag-5'>Printf</b>的使用

    使用CubeMX生成STM32F103C8T6的DMA ADC代码为什么无效?

    */ #include \"main.h\" #include \"stdio.h\" uint32_t ADC_Value=0; int main(void
    发表于 03-29 06:08

    求助,关于STM32CUBEIDE1.5.0使用Printf函数的疑问

    找的 #include \"stdio.h\" #ifdef __GNUC__ /* With GCC, small printf (option LD Linker-&
    发表于 03-22 06:47

    TLE9854 printf函数无法输出是怎么回事?

    TLE9854 的串口能正常输出,现在想配置成printf,使能STDOUT和STDIN,选择MicroLIB,可是没法输出,怀疑是程序里这个函数没被调用,这个
    发表于 02-02 16:05

    如何使用STM模块测量函数的执行时间?

    计时器对其进行测量? 另外,要在执行期间获取这些值,是必须通过调试还是可以通过 printf 打印出来? 我试过 printf 但无法打印出值(我已经包含了 stdio.h 图书馆)
    发表于 01-22 06:38

    M451在Keil中,printf函数打印输出到哪里

    在Keil中,printf函数,打印输出到哪里? 我的项目中没有使用UART0,而是使用了UART3
    发表于 01-17 07:55

    请问NuMaker Uni怎么使用printf函数

    NuMakerUni怎么使用printf函数?使用后串口调试助手上没有反应,求解。
    发表于 01-16 08:21