【问题标题】:How do I view implementation source of printf?如何查看 printf 的实现源码?
【发布时间】:2012-06-13 04:56:52
【问题描述】:

我想看看 printf(和许多其他函数)是如何工作的。

我写的

#include <Windows.h>
#include <stdio.h>
int main()
{
printf("");
return 0;
}

在 main.c 代码中并在右键菜单中转到定义

但它显示类似

_Check_return_opt_ _CRTIMP int __cdecl printf(_In_z_ _Printf_format_string_ const char * _Format, ...);
#if __STDC_WANT_SECURE_LIB__
_Check_return_opt_ _CRTIMP int __cdecl printf_s(_In_z_ _Printf_format_string_ const char * _Format, ...);
#endif

我找不到任何有关 printf 工作原理的提示。

谁能告诉我如何学习标准库实现?

【问题讨论】:

  • printf 很容易成为可以想象的最复杂的函数之一。只需尝试在脑海中计算出 you 将如何以通常的十进制表示法格式化浮点数。 (也就是说,printf 的所有其他非浮点部分都是直截了当的。)
  • 有一个libc的开源实现。您可以下载并检查它。 (对于不需要的非标准标头 &lt;Windows.h&gt; 而言,情况并非如此)

标签: c implementation standard-library


【解决方案1】:

【讨论】:

  • 这是一种误导,因为 OP 在 Windows 上运行,并且可能使用 MSVC printf(),这有很大不同。
  • @fuzxxl:是的。但似乎 OP 对一般实现概念感兴趣,所以 GNU 版本应该足够了。
  • 我不同意。 printf 的 glibc 版本可能是最复杂和最复杂的实现之一(就像所有 glibc 一样)。其他 libc 实现包含更简单的 printf 代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-16
  • 2014-10-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 2017-04-12
相关资源
最近更新 更多