如何在C源代码中找出哪个头文件中存在哪些函数?

如何在C源代码中找出哪个头文件中存在哪些函数?,c,C,我有以下代码: #include<stdio.h> #include<stdlib.h> int main() { printf("Checking\n"); exit(0); } #包括 #包括 int main() { printf(“检查”); 出口(0); } 在源代码之前,我有两个函数,一个是printf(),也就是 存在于stdio.h头文件中。第二个是exit()函数,即 存在于stdlib.h头文件中 现在

我有以下代码:

#include<stdio.h>
#include<stdlib.h>
int main()
{
     printf("Checking\n");
     exit(0);
}

 
#包括
#包括
int main()
{
printf(“检查”);
出口(0);
}
在源代码之前,我有两个函数,一个是printf(),也就是 存在于stdio.h头文件中。第二个是exit()函数,即 存在于stdlib.h头文件中

现在我希望这个程序的输出是:

printf()函数存在于stdio.h中

stdlib.h中存在exit()函数


有什么方法可以找到这个问题吗?

确实没有可移植的方法可以做到这一点,因为头文本根本不需要存在于文件中!根据标准,
#include
只需修改环境而不引用特定的实际头文件是完全可以接受的,因此,在这种情况下,您不容易从程序中访问信息

在确定标题文本是否可用方面,可以从简单的文本搜索(可能有误报,因为
math.h
标题文件中可能有关于
printf
的注释)到全面的C感知解析器(可能很复杂)

或者,您可以(手动)参考实际标准,因为这些详细信息在那里可用,la:

7.21.4.1删除功能
提要
#包括
int remove(常量字符*文件名);
C11中的这个小片段意味着可以在
stdio.h
中找到
remove
函数

如果您仍然希望在程序中实现这一点,只需将标准中的所有知识收集到一个文件或数据结构(如关联数组)中,然后编写代码来查找给定的标识符,如下所示:

#include <string.h>
#include <assert.h>
const char *lookFor (const char *ident) {
    // These should have ALL identifiers and their
    //   equivalent headers.

    static const char const *identifier[] = { "remove",  "strcpy",   ... };
    static const char const *header[] =     { "stdio.h", "string.h", ... };

    assert (sizeof(identifier) == sizeof(header));
    for (size_t i = 0; i < sizeof(header) / sizeof(*header); i++)
        if (strcmp (ident, identifier[i]) == 0)
            return header[i];

    return NULL;
}
#包括
#包括
常量字符*查找(常量字符*标识){
//它们应该具有所有标识符及其
//等效标题。
静态常量字符常量*标识符[]={“删除”、“strcpy”、…};
静态常量char const*头[]={“stdio.h”、“string.h”、…};
断言(sizeof(标识符)=sizeof(头));
对于(size_t i=0;i
如果你指的是一个完成这项工作的神奇函数:不,没有。你只需了解其中一些函数需要哪些头文件即可。如果你不能学习,作为最后手段,你可以求助于你最喜欢的搜索引擎。你想通过
gc
c获得一些信息,你可以使用选项打印这些信息。例如,
gcc test.c-aux info=infos.txt-o test
头文件中没有魔法。您可以制作自己的包含
printf
exit
原型的程序,包括这些原型,您的程序将像往常一样编译。问题相同。看起来像是家庭作业。