c - 我在哪里可以获得 gcc/clang 等 C 标准函数的源代码?

标签 c gcc clang header-files

我想查看函数的“真实”C 源代码 — 它在 gcc 和 clang 编译器中的真实实现。我的意思是“真实的”,因为我查看了头文件,但我只看到了一个原型(prototype)和一些看起来像扩展的东西。

例如,假设我想要标准 C tmpnam() 函数的代码。它在 stdio.h 头文件中定义(按照标准——我知道只有它的原型(prototype)必须在那里定义;代码本身可以来自任何(最好由编译器编写者选择)头文件)。但是我只能看到

/* Generate a temporary filename.  */
extern char *tmpnam (char *__s) __THROW __wur;
__END_NAMESPACE_STD

使其工作的函数代码在哪里?这就是我要找的。同样,我没有在 clang 编译器中找到它。 如果可能的话,有人可以解释为什么编译器作者选择这种模型吗?它不会在相应的头文件中显式保留代码吗?执行某种类型的优化或类似的东西是某种“技巧”吗?

最佳答案

你可以尝试获取source code of glibc或任何类似的 C 库实现。那应该有你要找的代码。您也可以浏览 source code of glibc online .

至于推理,它是基本的“你看不到你不需要看到的东西”的推理。无需查看实现,只需查看库的接口(interface)即可。

关于c - 我在哪里可以获得 gcc/clang 等 C 标准函数的源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14451087/

相关文章:

c - 如何从函数返回可变大小的字符串?

c - eBPF:理解验证器代码中的两个宏

c++ - GCC 无法向量化这个简单的循环 ('number of iterations cannot be computed' ) 却在同一代码中管理了一个类似的循环?

c - 如何使用 "unity"在 Mac (Lion) 上对 C 代码进行单元测试?

c++ - Clang vs GCC vs MSVC - 使用大括号括起来的初始化列表来创建用户定义的类型?

c++ - C中的原始#define理解

c - 如何在 POSIX 正则表达式中编写负向前瞻

c - C中的数字分隔符

gcc - GCC/C语。如果某些-O标志在特定计算机上是最佳的,那么它们在另一台计算机上也是最佳的吗?

C++ 在外部库中使用 clang-tidy