私はいくつかのソフトウェアをUnixからWindowに移植しており、WindowsXPSP3で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は使いたくない。