我希望看到函数的“真正的”C源代码 - 它在gcc和clang编译器中的真正实现。我的意思是“真实”,因为我在头文件中查看,但我只看到一个原型和看似扩展的东西。
例如,假设我想要标准C tmpnam()
函数的代码。它在stdio.h头文件中定义(按标准 - 我知道只有它的原型必须在那里定义;代码本身可以来自任何(由编译器编写者更好地选择)头文件)。但我只能看到的是
/* Generate a temporary filename. */
extern char *tmpnam (char *__s) __THROW __wur;
__END_NAMESPACE_STD
使其起作用的函数的代码在哪里?那是我在寻找的。同样,我没有在clang编译器中找到它。 如果可能,有人可以解释为什么编译器编写者选择这个模型?它是否将代码显式保留在相应的头文件中?执行某种类型的优化或类似的东西是一种“技巧”吗?
答案 0 :(得分:4)
您可以尝试获取source code of glibc
或任何类似的C库实现。那应该有你正在寻找的代码。您还可以浏览source code of glibc
online。
至于推理,它的基本“你看不出你不需要看到的”推理。没有必要查看实现,只需要查看库的接口。