Pourquoi S_IRWXG et S_IRWXO ne sont-ils pas définis dans sys / types.h sous Windows?

Je porte un logiciel sur Windows à partir d’Unix et j’utilise g ++ v4.7 sous Windows XP SP3. J’ai une déclaration de fichier d’en-tête qui ressemble à ceci:

#include  #include  using namespace std; bool MakeDir(const ssortingng &dirName, mode_t mode =S_IRWXU | S_IRWXG | S_IRWXO); 

Mais quand je le comstack, je reçois cette erreur:

 FileName.h:35:40: error: 'S_IRWXG' was not declared in this scope FileName.h:35:50: error: 'S_IRWXO' was not declared in this scope 

Pourquoi sys/types.h définirait-il S_IRWXU mais pas S_IRWXG ni S_IRWXO ?

J’ai trouvé du code qui les définit sur Windows comme ceci:

 #define S_IRWXG (S_IRWXU >> 3) #define S_IRWXO (S_IRWXG >> 3) 

Cela semble être un kludge et apte à casser, y a-t-il un meilleur moyen d’obtenir des définitions pour ceux-ci? Je ne veux pas utiliser Cygwin.

S_IRWXG et S_IRWXO sont réels pour Linux, sous Windows vous n’en avez pas besoin, les valeurs que vous pouvez simplement obtenir de Linux

Windows XP ne dispose pas du groupe de concepts et des autres permissions dans son système de fichiers. Par conséquent, ces macros ne sont pas définies.