我將一些軟件移植到Unix上的Window,並在Windows XP SP3上使用g ++ v4.7。我有一個頭文件中的聲明看起來像這樣:爲什麼在Windows的sys/types.h中沒有定義S_IRWXG和S_IRWXO?
#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。
每本:HTTP://msdn.microsoft.com/en-us/library /14h5k7ff(v=vs.80).aspx窗口仍然有一個sys/stat.h,所以#include將添加那些缺少的宏。 –
如上所示,我已經包括''。我也試着在它上面加上'',但這沒有幫助。也許我錯過了一些-D預處理器標誌來定義它們? –
WilliamKF