C语言中printf函数的代码

时间:2011-02-01 19:46:48

标签: c printf stdio

  

可能重复:
  source code of c/c++ functions

我想知道在哪里可以找到使用的C代码,这样当我写printf(“Hello World!”)时;在我的C程序中知道它必须将该字符串打印到STDOUT。我查看了< stdio.h>,但在那里我只能找到它的原型int printf(const char * format,...),但不是内部的样子。

1 个答案:

答案 0 :(得分:75)

以下是printf的GNU版本...您可以看到它传递到stdoutvfprintf

__printf (const char *format, ...)
{
   va_list arg;
   int done;

   va_start (arg, format);
   done = vfprintf (stdout, format, arg);
   va_end (arg);

   return done;
}

See here.

这里是a linkvfprintf ...所有格式化“魔术”都发生在这里。

这些函数唯一真正“不同”的是它们使用varargs来获取可变长度参数列表中的参数。除此之外,它们只是传统的C.(这与Pascal的printf等价形成对比,后者在编译器中具有特定支持...至少它在当天回来了。)