GCC 编译器如何找到某些隐式声明的函数对应的 header 文件?

How does GCC compiler find the header file corresponding to some implicitly declared functions?

对于隐式声明的函数,gcc 有时会告诉您该函数所属的 header 文件。从 this answer 开始,似乎只有一些函数是内置的——“一些编译器包含 built-in 声明,因此它们可以进行一些基本的类型检查”。

gcc 就是这样告诉你哪个 header 文件对应于一些隐式声明的函数而不是其他的吗?

例如,

how gcc is able to tell you which header file corresponds to some implicitly declared functions and not others?

Gcc 有一个符号列表和 headers。当遇到符号但未定义但在列表中时,将显示一条消息,其中包含建议的 header 名称。

请参阅 https://github.com/gcc-mirror/gcc/blob/16e2427f50c208dfe07d07f18009969502c25dc8/gcc/c-family/known-headers.cc#L157 来自 gcc 来源的列表。

bsearch不在列表中,所以不显示提示。我喜欢这些提示,包含 C 标准中的所有符号对我来说会很好,包括 bsearch。如果列表被排序并使用 bsearch,这也将是一个加速。您可以 contribute to gcc or donate to gcc 并将其写到 gcc 邮件列表。