由于系统调用C的任何库函数(比如printf())所依赖的操作系统依赖于操作系统,这是否意味着我们对不同的操作系统有不同的函数printf()?
答案 0 :(得分:2)
这取决于你对"不同"的定义,因为我至少可以想到三个不同的层次:
C标准提出了一个界面,这个界面应该得到全面尊重。这意味着对于具有C标准库的任何操作系统,操作系统应该向您的程序显示一个名为printf
的插座,如果您的程序插入它,它可以期望它的行为与记录一致。这意味着,对于您所关注的所有人而言,printf
是全面的。
这并不意味着printf
必须是每个标准库中的同一段代码。如果有人告诉我写一个printf
函数并告诉你写一个printf
函数,我们可以有一个不同的方法,只要我们都尊重记录的行为,这仍然会很好。事实上,出于版权原因,您可以确定Windows printf
的代码与Linux的printf
代码不同。
最后,即使使用相同的源代码,printf
也必须不同以适应平台差异。例如,您不能期望x86 printf
能够在ARM上运行。正如您所指出的,由于平台约定和系统调用差异,您无法期望Linux printf
能够在Windows上运行。
因此printf
出口背后的机器代码会有所不同,但标准的要点是使其工作原理相同。
答案 1 :(得分:1)
如果你的意思是" printf
在不同的操作系统和#34;上表现不同,那么答案是: