| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 932 人关注过本帖
标题:C语言:printf()函数的实现原理..........
只看楼主 加入收藏
suishuhao
Rank: 2
等 级:论坛游民
帖 子:89
专家分:10
注 册:2012-9-25
结帖率:61.9%
收藏
 问题点数:0 回复次数:5 
C语言:printf()函数的实现原理..........
请回答我的问题:
这些stdio库函数大部分是调用系统API的,
然而printf函数是在静态连接库中,
在程序链接的时候,printf函数的代码会被链接到OBJ文件中最后生成EXE文件。
那么:包含printf()的EXE程序执行时,EXE程序会调用动态链接库,从而实现系统调用以完成输出功能呢?

我的问题很简单,就是像printf这些调用系统API的库函数,在运行EXE程序时,是不是动态调用DELL库?

我这样之所以提出这样的问题:是基于以下2个知识:
①printf函数调用系统API
②API函数在动态链接库DELL中
综合上述2个知识:我得出结论:printf执行时需要DELL的协助。 ----对吗?




















搜索更多相关主题的帖子: 知识 动态 C语言 
2013-03-08 20:42
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:0 
1.库函数分成静态库和动态库
2.动态库在windows下面为dll,在类unix下面是so
3.printf是动态库函数

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-03-09 07:44
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
00401000 >/$ 68 F4204000    PUSH OFFSET t6.??_C@_06IHAKPAPK@HELLO?6?>; /format = "HELLO
"
00401005  |. FF15 A0204000  CALL DWORD PTR DS:[<&MSVCR100.printf>]   ; \printf
0040100B  |. 83C4 04        ADD ESP,4
0040100E  |. 33C0           XOR EAX,EAX
00401010  \. C3             RETN

从这里能看出点什么吗  自己看吧  嘿嘿

DO IT YOURSELF !
2013-03-09 07:50
伊雪儿
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-3-8
收藏
得分:0 
在windows系统中,c语言常用的函数大部分都调用API来实现的,c语言的标准函数(像printf,scanf,malloc之类的).
是调用位于c:\windows\system32中的DLL msvcrt.dll(主要是他).
2013-03-09 08:22
伊雪儿
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-3-8
收藏
得分:0 
这个在windows系统来说应该是对的.
2013-03-09 08:23
未微电子
Rank: 2
来 自:丹霞地貌
等 级:论坛游民
帖 子:47
专家分:57
注 册:2013-2-24
收藏
得分:0 
printf是个函数,其参数是valist类型的,也就是说参数是不固定的,它的实现是
    * Algorithm:
    * The format string is parsed by using a finite state automaton
    * based on the current state and the current character read from
    *       the format string.  Thus, looping is on a per-character basis, *       not a per conversion specifier basis.  Once the format specififying *       character is read, output is performed.一个有限自动机来解析格式字符串的。格式串之后就是格式中对应的参数。这些参数是通过一个va_arg的宏来获取的.

失信于一人,才跌入凄凉的境界。
2013-03-09 09:31
快速回复:C语言:printf()函数的实现原理..........
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019337 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved