查找定义 C 函数的头文件

Edw*_*ang 5 c header openafs

应该不难吧?对?

我目前正在搜索 OpenAFS 代码库以查找 pioctl 的标头定义。我已经把所有的东西都扔了:检查 ctags,搜索 pioctl 的源代码等。我最接近线索的是,有一个包含定义的文件 pioctl_nt.h,除了它是实际上不是我想要的,因为没有一个用户空间代码直接包含它,而且它是特定于 Windows 的。

现在,我不希望您去下载 OpenAFS 代码库并为我找到头文件。不过,我很好奇:当其他一切都失败时,您有什么技巧可以找到所需的头文件?最坏的情况是什么,可能导致代码库中 pioctl 的 grep 实际上没有提出任何看起来像函数定义的东西?

我还应该注意,我可以访问两个已经正确完成的独立用户空间程序,因此理论上我可以对函数进行 O(n) 搜索。但是没有一个头文件弹出给我,而且 n 很大......

编辑:当前问题已解决:pioctl() 是隐式定义的,如下所示:

AFS.xs:2796: error: implicit declaration of function ‘pioctl’
Run Code Online (Sandbox Code Playgroud)

Ada*_*eld 4

如果grep -rctags失败,那么它可能被定义为某些令人讨厌的宏的结果。您可以尝试制作能够pioctl()成功调用和编译的最简单的文件,然后对其进行预处理以查看会发生什么:

gcc -E test.c -o test.i
grep pioctl -C10 test.i
Run Code Online (Sandbox Code Playgroud)