我刚刚在Visual Studio(Windows)中添加了一个旧的项目,添加目录testing,发现编译错误。 我只是从我的其他工作项目复制函数,并添加相同的标题。 如果你点击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 ... } }
由于POSIX符号是S_ISDIR
并且你的系统似乎大多遵循POSIX,但是增加了一个前导下划线,或许_S_IFDIR
应该被_S_ISDIR
替换(即用S代替F )?
可能_S_IFDIR
是在一些#if
检查之间,并不是真的。
//sys/stat.h #ifdef SOMETHING // <--- this needs to be true to activate below code //... #define _S_IFDIR 0 //... #endif
你可以尝试添加下面的定义:
#if defined __WIN32__ || defined _WIN32 || defined _Windows #if !defined S_ISDIR #define S_ISDIR(m) (((m) & _S_IFDIR) == _S_IFDIR) #endif #endif