Должен ли я включать какие-либо или все заголовки, перечисленные в кратком описании справочной страницы?
Вопрос
Например, возьмем 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);
Должен ли я включать все эти заголовочные файлы или подойдет любой из них?В первом случае, как я узнаю, какие заголовочные файлы содержат какие функции, макросы и определения типов?
Решение
Вы должны включать все их.Спецификация POSIX расскажет вам, что в каждом (например, Это Спецификация POSIX для FCNTL.H) или, по крайней мере, что гарантированно будет в каждом.
Другие советы
Вы должны включить все эти заголовочные файлы.Заголовки, упомянутые в синопсисе, все должны быть включены.
afaik, вы должны включить все эти заголовочные файлы.Зачем вам нужно знать, какой файл заголовка содержит макросы, функции или Typedefs, если вы в конечном итоге включите их все?
Только <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>
это тоже не требуется.
Требование о включении <sys types.h=""> было удалено.Хотя требовалось для соответствия реализациям предыдущих Спецификаций POSIX, это не требовалось для приложений UNIX.