如何在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
原型的程序,包括这些原型,您的程序将像往常一样编译。问题相同。看起来像是家庭作业。