C语言中printf函数的代码

发布于 10-15 12:03 字数 339 浏览 5 评论 0原文

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

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

Possible Duplicate:
source code of c/c++ functions

I was wondering where I can find the C code that's used so that when I write printf("Hello World!"); in my C programm to know that it has to print that string to STDOUT. I looked in <stdio.h>, but there I could only find its prototype int printf(const char *format, ...), but not how it looks like internally.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑看君怀她人2024-10-22 12:03:58

这是 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;
}

参见此处。

这是链接vfprintf...所有格式化“魔法”都发生在这里。

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

Here's the GNU version of printf... you can see it passing in stdout to vfprintf:

__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.

Here's a link to vfprintf... all the formatting 'magic' happens here.

The only thing that's truly 'different' about these functions is that they use varargs to get at arguments in a variable length argument list. Other than that, they're just traditional C. (This is in contrast to Pascal's printf equivalent, which is implemented with specific support in the compiler... at least it was back in the day.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文