Dois-je inclure tout ou partie des en-têtes répertoriés dans le synopsis d’une page de manuel ?

StackOverflow https://stackoverflow.com//questions/21052775

  •  22-12-2019
  •  | 
  •  

Question

Par exemple, prenons open(2), qui a le synopsis suivant :

#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);

Dois-je inclure tous ces fichiers d'en-tête ou l'un d'entre eux est-il correct ?Dans le premier cas, comment savoir quels fichiers d'en-tête contiennent quelles fonctions, macros et typesdefs ?

Était-ce utile?

La solution

Vous devriez les inclure tous.La spécification POSIX vous indiquera ce qui est dans chaque (par exemple, Ce est la spécification POSIX pour fcntl.h), ou du moins ce qui est garanti pour chacun.

Autres conseils

Vous devez inclure tous ces fichiers d'en-tête.Les en-têtes mentionnés dans le synopsis sont tous supposés être inclus.

AFAIK, vous devez inclure tous ces fichiers d'en-tête.Pourquoi avez-vous besoin de savoir quel fichier d'en-tête contient des macros, des fonctions ou des typées, si vous les incluez finalement tous?

Seulement <fcntl.h> est requis.Il y a deux pages de manuel pour open. http://linux.die.net/man/2/open et 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);

Si vous utilisez la surcharge avec mode_t, vous avez besoin <sys/types.h>.

#include <sys/stat.h>
#include <fcntl.h>

int open(const char *path, int oflag, ... );

Pour cette dernière surcharge, opengroup.org considère <sys/stat.h> facultatif.Aussi, <sys/types.h> n’est pas non plus obligatoire.

L’obligation d’inclure <sys/types.h> a été supprimée.Bien qu'il soit nécessaire pour conformer les implémentations des spécifications POSIX précédentes, elle n'était pas nécessaire pour les applications UNIX.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top