如何检查我是否可以使用 <sys/statvfs.h>?
How do I check if I can use <sys/statvfs.h>?
我想写一个可移植的方式来获取免费磁盘space。在 Windows 上,我使用 GetDiskFreeSpaceEx
,在 Linux 上,header <sys/statvfs.h>
包含我可以使用的功能 statvfs64()
。
我的问题是,我可以假设这个 header 在哪些系统上存在。有没有我可以检查的宏?像
#ifdef _MSC_VER
#include <windows.h>
#else
#ifdef STATVFS_IS_AVAILABLE
#include <sys/statvfs.h>
#endif
#endif
通常,您会使用自动工具来处理类似的东西。 autoconf
创建一个 config.h
header 定义一个 HAVE_STATVFS
左右的宏,如果你定义了一个合适的配置测试。
但是,由于 <sys/statvfs.h>
在其他方面的巨大可用性,您也可以像刚才那样简单地测试 _MSC_VER
的可移植性较低。
我想写一个可移植的方式来获取免费磁盘space。在 Windows 上,我使用 GetDiskFreeSpaceEx
,在 Linux 上,header <sys/statvfs.h>
包含我可以使用的功能 statvfs64()
。
我的问题是,我可以假设这个 header 在哪些系统上存在。有没有我可以检查的宏?像
#ifdef _MSC_VER
#include <windows.h>
#else
#ifdef STATVFS_IS_AVAILABLE
#include <sys/statvfs.h>
#endif
#endif
通常,您会使用自动工具来处理类似的东西。 autoconf
创建一个 config.h
header 定义一个 HAVE_STATVFS
左右的宏,如果你定义了一个合适的配置测试。
但是,由于 <sys/statvfs.h>
在其他方面的巨大可用性,您也可以像刚才那样简单地测试 _MSC_VER
的可移植性较低。