printf()函数在哪个库文件中

yuxinjian 2012-07-13 10:01:44
请问各个系统printf()函数的实现(函数体)放置的库文件都是不一样的吗?
那么请问RedHat Linux中(比如 Red Hat Enterprise Linux AS release 3 (Taroon Update 4))printf()函数的实现在哪个库文件中?是动态库还是静态库?
如果找到了该库文件,能否用哪个命令看到其源代码?如果不能,能在哪里获得该printf()实现的源代码?
...全文
2267 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuxinjian 2014-11-15
  • 打赏
  • 举报
回复
谢谢大家的解答
沭水河畔 2012-07-13
  • 打赏
  • 举报
回复
也可以到Linux内核源码里找vsprintf.c。
wqkjj 2012-07-13
  • 打赏
  • 举报
回复
哦,补充一点,象printf这样的C标准函数,貌似按照C规范应该是在libc.a中实现的。LZ可以找找C89或者C99规范看看。
wqkjj 2012-07-13
  • 打赏
  • 举报
回复
请问各个系统printf()函数的实现(函数体)放置的库文件都是不一样的吗?
----------------------------------------------------------------
我所接触的大约10来种主流unix/linux貌似都放在libc.a/libc.so中

那么请问RedHat Linux中(比如 Red Hat Enterprise Linux AS release 3 (Taroon Update 4))printf()函数的实现在哪个库文件中?是动态库还是静态库?
-------------------------------------------------------------------------------
这个肯定在libc.a中
虽然编译时可以使用libc.so来编译,但实际上libc.so中代码指向仍然会定位到libc.a。

如果找到了该库文件,能否用哪个命令看到其源代码?如果不能,能在哪里获得该printf()实现的源代码?
------------------------------------------------------------------------------------------
不同系统的实现不尽相同。象AS3的代码如下。能否弄到代码,要看是什么系统。如果是商用的unix,难度比较大。顺便说下,这是V7的源码中的,ASx的printf和V7有若干历史渊源。
#include <stdio.h>

printf(fmt, args)
char *fmt;
{
_doprnt(fmt, &args, stdout);
return(ferror(stdout)? EOF: 0);
}
flowingfirefly 2012-07-13
  • 打赏
  • 举报
回复
printf在Linux下的实现遵循POSIX标准,Google posix
scream7 2012-07-13
  • 打赏
  • 举报
回复

int printf (const char *__format, ...)
{
register int __retval;
__builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
__retval = __mingw_vprintf( __format, __local_argv );
__builtin_va_end( __local_argv );
return __retval;
}

抄的mingw里的

70,024

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧