如何使用C中的特定头文件打印我们程序中使用的内置函数名?

我需要从特定的头文件中找到我们程序中使用的内置函数。

例如,我有以下C文件:

#include int main() { int a; scanf("%d",&a); printf("a = %d\n", a); } 

如果我将stdio.h头文件提供给任何命令,它需要输出如下输出:

 scanf printf 

是否有任何内置命令来获取此信息?

或gcc或cc命令中可用的任何选项来获取此信息?

如果您使用GCC作为编译器,则可以运行以下命令:

 echo "#include " | gcc -E - 

这将从stdio.h标头和该标头包含的文件中打印许多行,依此类推。

有些行看起来像#line … ,它们告诉你以下行的来源。

您可以分析这些行,但从中提取函数(解析)非常复杂。 但是如果你只想要一个快速,不可靠的检查,你可以搜索这些行是否包含单词scanfprintf

编辑

正如评论中所建议的那样, -aux-info更有用,但只有在编译文件时才有效,而不是在预处理时。 因此:

 cat <so.c #include  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 

可以使用objdump确定程序中的函数调用,如下所示:

 objdump -t so.c 

以上命令为您提供原始数据。 您仍然需要解析此数据并将其合并为仅提供与您的问题相关的数据。