2016-01-13 96 views
2

我想寫一個可移動的方式來獲得可用磁盤空間。在Windows上,我使用GetDiskFreeSpaceEx,而在Linux上,標頭<sys/statvfs.h>包含我可以使用的功能statvfs64()如何檢查我是否可以使用<sys/statvfs.h>?

我的問題是,在哪些系統上我可以假設這個頭文件存在。有我可以檢查的宏嗎?類似於

#ifdef _MSC_VER 
#include <windows.h> 
#else 
    #ifdef STATVFS_IS_AVAILABLE 
    #include <sys/statvfs.h> 
    #endif 
#endif 

回答

1

通常,您可以使用autotools來做類似的事情。 autoconf創建一個config.h標題,如果您定義了合適的配置測試,則該標題定義了一個HAVE_STATVFS左右的宏。

但是,由於<sys/statvfs.h>的其他方面的巨大可用性,您也可以簡便地測試_MSC_VER,就像您剛纔那樣。

+2

'sys/statvfs'是[標準POSIX](http://pubs.opengroup.org/onlinepubs/009604599/basedefs/sys/statvfs.h.html),所以它非常便攜。在這種情況下,微軟更是離羣點。 –