有些事我还不完全明白例如,标准C函数,如printf()
和scanf()
处理将数据发送到标准输出或从标准输入获取数据实现这些功能的源代码是否会有所不同,这取决于我们是在Windows还是Linux上使用它们?
我想最快的答案应该是“是”,但他们真的必须有所不同吗?
我可能错了,但我的猜测是,实际的函数代码是相同的,但是最终被这些函数调用的操作系统的底层函数是不同的所以,任何编译器都可以编译这些相同的C函数,但它是在(这些函数依赖于在较低层上工作)之后被链接的,是什么赋予了我们所需的行为?
最佳答案
实现这些功能的源代码是否不同
取决于我们是在Windows还是Linux上使用它们?
可能。对于不同的linux和Windows程序,它甚至可能是不同的有几种不同的C标准库实现可用于Linux,甚至可能不止一种用于Windows不同的实现将有不同的实现代码,否则律师会介入。
我的猜测是实际的函数代码是相同的,但是
操作系统的层函数最终被这些
功能不同所以任何编译器都可以编译这些相同的C
函数,但它是在
依赖于在较低层上工作)是我们所需要的
行为?
可以想象,标准库函数将以一种将环境依赖抽象到某个较低层的方式编写,以便这些函数本身的同一源可以在多个环境中使用,下面是某种特定于环境的兼容层由于GNU C库支持各种各样的环境,它可以作为一般原则的一个例子,尽管Windows不在它支持的环境之列然而,即使在那时,即使在连接阶段之前,环境区分也是有效的不同的环境有不同的二进制格式。
然而,在实践中,您不太可能看到您描述的Windows和Linux的情况。