2

我正在将一些软件从 Unix 移植到 Window,并在 Windows XP SP3 上使用 g++ v4.7。我有一个如下所示的头文件声明:

#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_IRWXGS_IRWXO

我找到了一些在 Windows 上定义它们的代码,如下所示:

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

这似乎是一个混乱并且容易打破,有没有更好的方法来获得这些定义?我不想使用 Cygwin。

4

2 回答 2

3

S_IRWXG 和 S_IRWXO 对于 Linux 来说是实际的,在 Windows 上你不需要它们,你可以从 Linux 获得值

于 2015-05-14T15:43:30.120 回答
1

Windows XP 在其文件系统中没有概念组和其他权限,因此没有定义这些宏。

于 2012-12-02T13:58:00.303 回答