我正在将一些软件从 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_IRWXG
呢S_IRWXO
?
我找到了一些在 Windows 上定义它们的代码,如下所示:
#define S_IRWXG (S_IRWXU >> 3)
#define S_IRWXO (S_IRWXG >> 3)
这似乎是一个混乱并且容易打破,有没有更好的方法来获得这些定义?我不想使用 Cygwin。