首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >没有stdio,什么是可能的?

没有stdio,什么是可能的?
EN

Stack Overflow用户
提问于 2011-06-30 14:31:20
回答 5查看 5.7K关注 0票数 6

我对编写操作系统很感兴趣已经有一段时间了。在深入研究几个不同的站点时,我发现了一个有趣的概念(转述一下):如果您使用#include开始编写引导加载程序,那么您已经犯了一个致命的错误。

我已经经历了K&R,整本书在每一课中都包含了它。在学习C语言的过程中,我一直在使用它,我不知道我学到了什么可以使用stdio,哪些不可以。没有stdio,你在C中能做什么?

EN

Stack Overflow用户

发布于 2011-06-30 14:43:52

任何引导加载器几乎肯定会有#include指令,除非它设计得很差。我不知道你从哪里得到这句话的,但也许你误解了它。引导加载器总是从一段纯汇编代码开始,用于初始的低级处理器初始化和初始化C运行时环境。这段代码根本不可能用C语言编写,但其余的代码可以根据需要在环境(内存等)的限制下变得非常复杂。

stdio只是一组连接到某种设备的文件流,这些设备可以接收输入和输出。您可以实现stdin、stdout、stderr或它们的任何子集。您还可以实现一个可以打开任意文件流的文件系统。在现代操作系统中,这最终连接到某种类型的终端,这通常涉及到相当多的层之间,因为它是显示在您的显示器上的虚拟终端,因此需要图形驱动程序等。在原始的嵌入式系统中,stdio可能连接到串行端口或LED显示器。

stdio使用read()write()函数实现。如果没有实现这些,你就不能使用printf()fprintf()fgets()等stdio函数,这并不意味着你不能写到你的图形显示器、串口或其他任何东西上。这只是意味着您没有标准的工具来执行此操作,需要调用自定义函数。

回答你的问题:没有stdio,你可以用C做任何事情。无论如何,它都是用C编写的,你只是失去了一些在任何C标准库中实现的通用功能。

票数 1
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6530808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档