C代码printf函数

可能重复:
c / c ++函数的源代码

我想知道在哪里可以find使用的C代码,所以当我写printf(“Hello World!”); 在我的C程序知道它必须打印该string到STDOUT。 我看了<stdio.h>,但在那里我只能find它的原型int printf(const char *格式,…),但不是它看起来像内部。

这里是printf的GNU版本…你可以看到它通过stdout传递给vfprintf

 __printf (const char *format, ...) { va_list arg; int done; va_start (arg, format); done = vfprintf (stdout, format, arg); va_end (arg); return done; } 

看这里。

这里有一个链接到vfprintf …所有的格式“魔术”发生在这里。

关于这些函数唯一真正“不同”的是他们使用可变参数来获取可变长度参数列表中的参数。 除此之外,它们只是传统的C语言(这与Pascal的printf等价物形成了鲜明的对比,这在编译器中得到了特定的支持,至less在当天才恢复)。

取决于你的平台和实施; 一个好的实现是GNU C,你可以从这里下载