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

    文章

    4421

    浏览量

    67828
  • Stdio
    +关注

    关注

    0

    文章

    3

    浏览量

    7758
  • Printf
    +关注

    关注

    0

    文章

    84

    浏览量

    14819

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    将C库的printf函数重定向到UART的过程

    这里不用keil自带的microLib这个代码,就是自己重新映射端口。 包含头文件 stdio.h #ifdef __GNUC__ /* With GCC/RAISONANCE, small
    发表于 01-21 07:14

    函数指针与回调函数解读

    函数指针是指向函数的指针变量。通过函数指针C语言可以实现各种强大的功能与设计方法。而回调函数函数
    发表于 01-19 07:34

    C语言中实现函数宏的三种方式

    1. 函数宏介绍 函数宏,即包含多条语句的宏定义,其通常为某一被频繁调用的功能的语句封装,且不想通过函数方式封装来降低额外的弹栈压栈开销。 函数宏本质上为宏,可以直接进行定义,例如
    发表于 12-29 07:34

    在ADS编译器中,用标准的C库函数printf()需要哪些设置呢?

    在ADS编译器中,用标准的C库函数printf()需要哪些设置呢?又在哪儿可以看到printf()输出的信息呢?
    发表于 12-23 07:32

    使用setjmp及longjmp函数处理异常

    使用setjmp和longjmp函数:这是一种用于实现非局部跳转的方法,就是在程序中设置一个跳转点,并在某些情况下跳转到该跳转点,从而绕过中间的一些代码或函数。这样可以在某些情况下模拟异常处理的效果
    发表于 12-11 08:00

    如何用函数指针调用函数

    函数 Func() 代码的首地址。 下面来写一个程序,看了这个程序你们就明白函数指针怎么使用了: #include int Max(int, int);//函数声明 int
    发表于 12-11 06:26

    什么是KEIL的微库(microlib)

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

    请问CW32F003支持printf函数吗?

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

    飞凌嵌入式ElfBoard-文件I/O的了解探究之I/O缓冲

    /O有自己的缓冲区(stdio缓冲区),因此虽然标准I/O是在系统I/O基础上进行封装而实现,但在效率、性能上标准I/O要优于系统I/O。标准I/O所维护的stdio缓冲是用户空间的缓冲区,当应用程序中
    发表于 11-19 16:24

    printf函数在hbird SDK中的应用

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

    计算程序执行指令数的函数实现

    (来源:手把手教你设计cpu_RISC-V处理器),他们分别存储指令计数器的高低32位 至此就大致能理解指令数计算函数实现原理,即通过csrr指令读minstreth和minstret寄存器得到执行操作前后的指令计数值,再
    发表于 10-28 06:27

    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