S_ISREG宏观不确定(S_ISREG macro undefined)

2019-07-30 04:07发布

问题

  • 是POSIX宏S_ISREG,S_ISDIR等只有Linux? 我需要找出因为我试图编译CURL和它试图使用它们在Windows
  • 我可以使用哪些包含文件来访问他们的Windows。

这是有问题的代码

/*we ignore file size for char/block devices, sockets etc*/
if(S_ISREG(fileinfo.st_mode))
   uploadfilesize= fileinfo.st_size;
}

它导致错误

error LNK2019: unresolved external symbol _S_ISREG referenced in function _operate file tool_operate.obj

他们在下面的问题中引用

  • 如何使用S_ISREG()和S_ISDIR()POSIX宏?
  • 在C和C在UNIX目录和文件之间进行区分++
  • 在C题阅读目录

显然S_ISREG()是一堆POSIX宏的一部分,显然应该告诉我们,如果一个文件是一个“普通文件”,但我发现了Linux特有的包含文件的所有例子。

Answer 1:

在Windows上没有这样的事,你可以用用FindFirstFile,FindNextFile的Win32 API中,返回结构包含相似但不相同的东西。

如果您使用gcc / MinGW的库,他们有一个统计()模拟。 您需要包括SYS / stat.h为宏。



Answer 2:

目前卷曲7.21.5定义setup.h这样的:

#if !defined(S_ISREG) && defined(S_IFMT) && defined(S_IFREG)
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
#endif


Answer 3:

在Windows尝试添加下划线( _S_ISREG )。 在MinGW的的lib的S_ISREG宏观上也能够获得在<sys/stat.h>

也许你应该检查你的配置宏。



文章来源: S_ISREG macro undefined
标签: c curl macros