Почему S_IRWXG и S_IRWXO не определены в sys / types.h в Windows?

Я портирую программное обеспечение на Windows из Unix и использую g ++ v4.7 в Windows XP SP3. У меня есть объявление файла заголовка, которое выглядит так:

#include <string>
#include <sys/types.h>

using namespace std;

bool MakeDir(const string &dirName,
mode_t mode =S_IRWXU | S_IRWXG | S_IRWXO);

Но когда я его компилирую, я получаю эту ошибку:

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

Почему бы sys/types.h определять S_IRWXU но нет S_IRWXG ни S_IRWXO?

Я нашел некоторый код, который определяет их в Windows следующим образом:

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

Это похоже на клочок и склонность к разрушению, есть ли лучший способ получить определения для них? Я не хочу использовать Cygwin.

1

Решение

S_IRWXG и S_IRWXO актуальны для Linux, в Windows они вам не нужны,
значения, которые вы можете просто получить из Linux

2

Другие решения

Windows XP не имеет концептуальной группы и других разрешений в своей файловой системе, поэтому эти макросы не определены.

1

По вопросам рекламы [email protected]