C语言中printf函数的代码

Rai*_*all 54 c printf stdio

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

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

小智 76

下面是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;
}
Run Code Online (Sandbox Code Playgroud)

看这里.

这里有一个链接vfprintf...所有格式"神奇"发生在这里.

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

  • 最著名的库函数之一,以及[其源代码的第 98 行](http://sourceware.org/git/?p=glibc.git;a=blob;f=stdio-common/vfprintf) 中的内容.c;h=fc370e8cbc4e9652a2ed377b1c6f2324f15b1bf9;hb=3321010338384ecdc6633a8b032bb0ed6aa9b19a#l98)?一堆`goto`和“这是一个黑客!!!” ;) (3认同)