我需要从特定的头文件中找到我们程序中使用的内置函数。
例如,我有下面的C文件:
#include<stdio.h>
int main()
{
int a;
scanf("%d",&a);
printf("a = %d\n", a);
}
如果我将stdio. h头文件提供给任何命令,它需要给出如下输出:
scanf
printf
有没有内置命令来获取这个?
或者gcc或cc命令中可用的任何选项来获取此信息?
如果您使用GCC作为编译器,您可以运行以下命令:
echo "#include <stdio.h>" | gcc -E -
这将从stdio. h
标头以及该标头包含的文件中打印许多行,依此类推。
有些行看起来像#line…
,它们告诉你以下行来自哪里。
您可以分析这些行,但是从中提取函数(解析)相当复杂。但是如果您只是想要快速、不可靠的检查,您可以搜索这些行是否包含单词scanf
或printf
。
编辑
正如注释中所建议的,-aux-info
更有用,但它仅在编译文件时有效,而不是在预处理时有效。因此:
cat <<EOF >so.c
#include <stdio.h>
int main(int argc, char **argv) {
for (int i = 1; i < argc; i++) {
fprintf(stdout, "%s%c", argv[i], i < argc - 1 ? ' ' : '\n');
}
fflush(stdout);
return ferror(stdout) == -1;
}
EOF
gcc -c so.c -aux-info so.aux
可以使用obobdump
确定程序中的函数调用,如下所示:
objdump -t so.c
上述命令为您提供原始数据。您仍然需要解析这些数据并将其组合起来,以便仅为您提供与您的问题相关的数据。