67

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

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

4

1 回答 1

95

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

__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等价物形成对比,后者是在编译器的特定支持下实现的……至少在当时是这样。)

于 2011-02-01T19:52:30.417 回答