我刚刚在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
...
}
}
答案 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