可能重复:
c/c++ 函数的源代码
我想知道在哪里可以找到使用的 C 代码,这样当我编写 printf("Hello World!"); 在我的 C 程序中知道它必须将该字符串打印到 STDOUT。我查看了 <stdio.h>,但在那里我只能找到它的原型 int printf(const char *format, ...),而不是它内部的样子。
可能重复:
c/c++ 函数的源代码
我想知道在哪里可以找到使用的 C 代码,这样当我编写 printf("Hello World!"); 在我的 C 程序中知道它必须将该字符串打印到 STDOUT。我查看了 <stdio.h>,但在那里我只能找到它的原型 int printf(const char *format, ...),而不是它内部的样子。
这是...的GNU版本,printf
您可以看到它传递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
等价物形成对比,后者是在编译器的特定支持下实现的……至少在当时是这样。)