错误:标识符“_S_IFDIR”未定义

时间:2011-08-09 09:01:21

标签: c windows directory

我刚刚在visual studio(windows)中打开了我的一个旧项目,添加了目录测试并发现了编译错误。 我只是从我的其他工作项目中复制了该函数并添加了相同的标题。 如果你单击F12 stats.h打开,你得到标识符但不知何故编译器没有看到它?

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

void my_function()
{
...
    struct _stat buf;        
    _wstat(dir, &buf);
    if ((buf.st_mode & _S_IFDIR) > 0) { // here _S_IFDIR undefined
        ...
    }
}

3 个答案:

答案 0 :(得分:1)

由于POSIX符号为S_ISDIR,并且您的系统似乎主要遵循POSIX但添加了前导下划线,因此_S_IFDIR可能应替换为_S_ISDIR(即替换 F S )?

答案 1 :(得分:0)

可能_S_IFDIR介于某个#if检查之间,但未实现。

//sys/stat.h
#ifdef SOMETHING  // <--- this needs to be true to activate below code
//...
#define _S_IFDIR 0
//...
#endif

答案 2 :(得分:0)

您可以尝试添加以下定义:

#if defined __WIN32__ || defined _WIN32 || defined _Windows
      #if !defined S_ISDIR
            #define S_ISDIR(m) (((m) & _S_IFDIR) == _S_IFDIR)
      #endif
#endif