例如,取open(2),其中包含以下概要:
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); int creat(const char *pathname, mode_t mode);
我应该包含所有这些头文件还是其中任何一个?在前一种情况下,我如何知道哪些头文件包含哪些函数,宏和typedef?
答案 0 :(得分:7)
你应该包括所有这些。 POSIX规范将告诉你每个中的内容(例如,this是fcntl.h的POSIX规范),或者至少保证每个中的内容。
答案 1 :(得分:1)
您应该包含所有这些头文件。概要中提到的标题都应包括在内。
答案 2 :(得分:1)
AFAIK,您应该包含所有这些头文件。为什么你最终要包含所有头文件包含宏,函数或typedef?
答案 3 :(得分:1)
只需要<fcntl.h>
。 open
有两个手册页。 http://linux.die.net/man/2/open和http://linux.die.net/man/3/open。
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
int creat(const char *pathname, mode_t mode);
如果您使用mode_t
重载,则需要<sys/types.h>
。
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *path, int oflag, ... );
对于后一种重载,opengroup.org认为<sys/stat.h>
是可选的。此外,也不需要<sys/types.h>
。
要求包含&lt; sys / types.h&gt;已被删除。虽然 是符合以前实施的要求 POSIX规范,UNIX应用程序不需要它。