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.