有没有一种简单的方法可以找出 C 函数声明位于哪个头文件中?cd
ing into/usr/include
并运行 ( grep -E 'system.*\(' *.h -R
) 需要一些尝试和错误,但是没有更简单的方法来做到这一点吗?
答案1
$ man 2 read
...
READ(2) Linux Programmer's Manual READ(2)
NAME
read - read from a file descriptor
SYNOPSIS
#include <unistd.h>
...
答案2
如果您在系统上搜索头文件,您将在系统上声明该函数的头文件中找到。这可能很困难,因为有时函数是通过复杂的宏声明的。它只会告诉你哪个头文件声明了该函数你的系统;这甚至可能是一个您无法直接包含的头文件,因为它需要首先包含其他头文件。
查找要包含的头文件的唯一安全方法是查阅提供该函数的库的文档。对于标准库,可以参考:
- C标准(C89=C90,C99或者C11) 定义了在运行 C 的每个平台上可用的函数。
- 这POSIX/单一 Unix 标准 (POSIX:2004,POSIX:2008) 定义了每个类 UNIX 平台上可用的函数。
- 您的平台可能具有其他功能或可能提供附加功能。请参阅其手册页(
man 3 function_name
或者man 2 function_name
- 之间的区别2 和 3很大程度上是历史的)或其他文档(例如GNU libc 手册在 Linux 上)。