我想看看函数的“真实”C 源代码——它在 gcc 和 clang 编译器中的真实实现。我的意思是“真实的”,因为我查看了头文件,但我只看到了一个原型和一些看起来像扩展的东西。
例如,假设我想要标准 Ctmpnam()
函数的代码。它在 stdio.h 头文件中定义(按照标准——我知道只有它的原型必须在那里定义;代码本身可以来自任何(由编译器编写者更好地选择)头文件)。但我能看到的只有
/* Generate a temporary filename. */
extern char *tmpnam (char *__s) __THROW __wur;
__END_NAMESPACE_STD
使它工作的函数的代码在哪里?这就是我要找的。同样,我在 clang 编译器中找不到它。如果可能的话,有人可以解释为什么编译器作者选择这个模型吗?它不会在相应的头文件中显式地留下代码吗?执行某种类型的优化是否有一些“技巧”或类似的东西?