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

    文章

    4406

    浏览量

    66862
  • Stdio
    +关注

    关注

    0

    文章

    2

    浏览量

    7710
  • Printf
    +关注

    关注

    0

    文章

    84

    浏览量

    14634

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    什么是KEIL的微库(microlib)

    stdio.h中与文件指针(FILE变量类型)交互相关的函数都会返回错误,仅有的例外情况是以下三个标准流:stdin、stdout 和 stderr。 为什么说这三个是例外:这三个实际上是3个宏,原型
    发表于 12-10 06:27

    请问CW32F003支持printf函数吗?

    CW32F003支持printf函数吗?
    发表于 11-21 07:48

    printf函数在hbird SDK中的应用

    在helloworld的例程中,使用到了printf函数,通过串口输出了数据。 在Nuclei Studio中通过teminal窗口可以查看串口打印的信息。 这背后的原理是什么? 在嵌入式
    发表于 10-31 08:48

    e203仿真helloworld例程printf能在终端显示的原理

    我在这里分享给大家。 实现原理 在仿真的终端打印信息,是需要软件部分和RTL设计相互配合的。 软件层面 c语言里,printf函数可以说是人尽皆知。在pc端,由于操作系统提供标准
    发表于 10-27 06:56

    RTTHREAD stdio 2.2.9 为什么不能导入 BSP?

    RTTHREAD stdio 2.2.9不能导入 BSP
    发表于 09-11 07:07

    【RA4E2开发板评测】移植micro_shell实现LED灯的在线控制

    添加shell_uart.h/c代码如下: #ifndef __SHELL_UART_H__ #define__SHELL_UART_H__ #include\"stdio.h
    发表于 08-29 18:14

    【RA4L1-SENSOR】+ 串口printf 输出

    ; #include \"stdio.h\" volatile bool uart_send_complete_flag = false; void debug_uart9_callback
    发表于 06-17 00:01

    请问为什么加了stdio.h,sprintf还是用不了?

    请问为什么自己加了stdio.h,sprintf还是用不了?
    发表于 03-13 07:23

    在外部中断中将printf写入,外部中断LED可以翻转,但串口不可显示,为什么?

    \" #include \"usart.h\" #include \"gpio.h\" #include \"stdio.h\"
    发表于 03-13 06:19

    【RA-Eco-RA2L1-48PIN-V1.0开发板试用】——使用串口输出打印printf实现

    上一篇我讲解了使用JINK RTT来实现串口输出打印printf函数功能, 本次测评我来讲解另外一种串口打印方式,直接使用板载的串口功能来实现。 首先打开原理图 由原理图可知道,其实
    发表于 01-23 12:20

    关联接口函数与libmodbus移植

    可以发现,除了modbus.h包含的接口函数之外,modbus-rtu.h和modbus-tcp.h也包含了必要的接口函数
    的头像 发表于 12-30 15:20 1818次阅读
    关联接口<b class='flag-5'>函数</b>与libmodbus移植

    【RA-Eco-RA4E2-64PIN-V1.0开发板试用】使用按键SW1实现单击,双击,长按等多种按键功能

    Configurator 将P005设为输入模式 #include \"hal_data.h\" #include \"stdio.h\" #include &
    发表于 12-17 22:17

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

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

    【RA-Eco-RA4E2-64PIN-V1.0开发板试用】UART串口通信-收发回显

    4.bsp_uart.h文件 #include \"hal_data.h\" #include \"stdio.h\" void Debug_UART9_Init(void); 5.主程序
    发表于 12-15 17:32

    【RA-Eco-RA4E2-64PIN-V1.0开发板试用】串口打印功能

    串口9,选择通道9 中断函数改名如下 生成代码,然后打开keil,开始编写串口函数 #include \"hal_data.h\" #include \"stdio.h
    发表于 12-13 13:08