C语言:printf()函数的实现原理 50
回答我的问题:这些stdio库函数大部分是调用系统API的,然而printf函数是在静态连接库中,在程序链接的时候,printf函数的代码会被链接到OBJ文件中最后生成E...
回答我的问题:
这些stdio库函数大部分是调用系统API的,
然而printf函数是在静态连接库中,在程序链接的时候,
printf函数的代码会被链接到OBJ文件中最后生成EXE文件。
那么:包含printf()的EXE程序执行时,EXE程序会调用动态链接库,从而实现系统调用以完成输出功能呢?
我的问题很简单,就是像printf这些调用系统API的库函数,在运行EXE程序时,是不是动态调用DELL库?
我这样之所以提出这样的问题:是基于以下2个知识:
①printf函数调用系统API
②API函数在动态链接库DELL中
综合上述2个知识:我得出结论:printf执行时需要DELL的协助。 ----对吗? 展开
这些stdio库函数大部分是调用系统API的,
然而printf函数是在静态连接库中,在程序链接的时候,
printf函数的代码会被链接到OBJ文件中最后生成EXE文件。
那么:包含printf()的EXE程序执行时,EXE程序会调用动态链接库,从而实现系统调用以完成输出功能呢?
我的问题很简单,就是像printf这些调用系统API的库函数,在运行EXE程序时,是不是动态调用DELL库?
我这样之所以提出这样的问题:是基于以下2个知识:
①printf函数调用系统API
②API函数在动态链接库DELL中
综合上述2个知识:我得出结论:printf执行时需要DELL的协助。 ----对吗? 展开
4个回答
展开全部
dll种类很多,可以使自定义的,也有是系统DLL 比如win32.DLL,比如打开文件之类的API就在这里。。。
所有的设备操作都是windows系统或驱动程序在执行的,你的程序不可能直接执行,当然你要告诉windows你想干什么,都需要有个桥梁,DLL是动态链接库,他其实是不能独自运行的,他没有自己的线程,所以你说是DLL完成的其实是不全对的。。。比如windows的API所在的那几个DLL文件,而且并没多大,你认为就这几个文件就能扛起一整套windows的所有功能吗???? 根本不是这样的,这windowsAPI的DLL库,只是充当一个传令兵而已。。。。
比如你要打开一个文件,是需要windows确确实实的建立一个文件对象,这必须要windows内核来完成,createfile这个API只是来获得一些相关参数,然后通知windows内核去工作,内核相关的程序,根本不在API所在的文件,WINDOWS运行时时要建立很多自己的进程的,任何功能都必须在进程里完成,单独一个DLL,什么也做不了,每个驱动程序运行都有自己的进程,和API相关的DLL,只是个和外部链接的接口,就相当于电视插销,遥控器一样,如果电视只有个壳,看上去是个电视,遥控器按钮都全乎,但就是不能用,API也是如此。。。。
所有的设备操作都是windows系统或驱动程序在执行的,你的程序不可能直接执行,当然你要告诉windows你想干什么,都需要有个桥梁,DLL是动态链接库,他其实是不能独自运行的,他没有自己的线程,所以你说是DLL完成的其实是不全对的。。。比如windows的API所在的那几个DLL文件,而且并没多大,你认为就这几个文件就能扛起一整套windows的所有功能吗???? 根本不是这样的,这windowsAPI的DLL库,只是充当一个传令兵而已。。。。
比如你要打开一个文件,是需要windows确确实实的建立一个文件对象,这必须要windows内核来完成,createfile这个API只是来获得一些相关参数,然后通知windows内核去工作,内核相关的程序,根本不在API所在的文件,WINDOWS运行时时要建立很多自己的进程的,任何功能都必须在进程里完成,单独一个DLL,什么也做不了,每个驱动程序运行都有自己的进程,和API相关的DLL,只是个和外部链接的接口,就相当于电视插销,遥控器一样,如果电视只有个壳,看上去是个电视,遥控器按钮都全乎,但就是不能用,API也是如此。。。。
--
2022-12-05 广告
2022-12-05 广告
图形化编程简单理解为用积木块形式编程,scratch和python也是其中的一种,属于入门级编程,以其简单生动的画面获得无数学生的喜爱,深圳市创客火科技有限公司是一家做教育无人机的公司,旗下有编程无人机,积木无人机及室内外编队,每款飞机含有...
点击进入详情页
本回答由--提供
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。
printf()函数的调用格式为: printf("<格式化字符串>", <参量表>)。
格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
函数功能:在c语言中产生格式化输出的函数(定义在 stdio.h 中),其向终端(显示器、控制台等)输出字符。
函数用法:
//以下程序用于获得输入值i,j并将其输出(i,j之间以逗号隔开)
#include<stdio.h>
int main()
{
int i, j;
scanf("%d, %d", &i, &j);
printf("i=%d;j=%d", i, j);
return 0;
}
//以下程序用于输出“百度百科”
#include<stdio.h>
int main()
{
printf("百度百科");
return 0;
}
format
Format 参数是包含三种对象类型的一个字符串:
* 无格式字符复制到输出流;
* 转换规范,每个规范导致在值参数列表中检索 1 个或更多个项;
* 转义序列。
printf()函数的调用格式为: printf("<格式化字符串>", <参量表>)。
格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
函数功能:在c语言中产生格式化输出的函数(定义在 stdio.h 中),其向终端(显示器、控制台等)输出字符。
函数用法:
//以下程序用于获得输入值i,j并将其输出(i,j之间以逗号隔开)
#include<stdio.h>
int main()
{
int i, j;
scanf("%d, %d", &i, &j);
printf("i=%d;j=%d", i, j);
return 0;
}
//以下程序用于输出“百度百科”
#include<stdio.h>
int main()
{
printf("百度百科");
return 0;
}
format
Format 参数是包含三种对象类型的一个字符串:
* 无格式字符复制到输出流;
* 转换规范,每个规范导致在值参数列表中检索 1 个或更多个项;
* 转义序列。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询