我想知道在哪里可以找到使用的C代码,这样当我写printf(“Hello World!”)时;在我的C程序中知道它必须将该字符串打印到STDOUT。我查看了< stdio.h>,但在那里我只能找到它的原型int printf(const char * format,...),但不是内部的样子。
答案 0 :(得分:75)
以下是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;
}
这里是a link到vfprintf
...所有格式化“魔术”都发生在这里。
这些函数唯一真正“不同”的是它们使用varargs来获取可变长度参数列表中的参数。除此之外,它们只是传统的C.(这与Pascal的printf
等价形成对比,后者在编译器中具有特定支持...至少它在当天回来了。)