我瘋了,試圖讓它在MinGW 32位上運行。它適用於我嘗試過的所有其他平臺。在MinGW 32-bit上確定64位文件大小C使用MinGW 32位
我想要做的就是將大於4GB的文件變成64位的整數。
能正常工作在其他平臺上:
#define _FILE_OFFSET_BITS 64
#include <sys/stat.h>
int64_t fsize(const char *filename) {
struct stat st;
if (stat(filename, &st) == 0)
return st.st_size;
return -1;
}
我想上面的代碼之前添加以下定義的基礎上,我在網上找到各種建議:
#define _LARGEFILE_SOURCE 1
#define _LARGEFILE64_SOURCE 1
#define __USE_LARGEFILE64 1
也試過:
#ifdef __MINGW32__
#define off_t off64_t
#endif
最後嘗試添加-D_FILE_OFFSET_BITS = 64到gcc標誌(應該是sam e,因爲上面的定義雖然...)
沒有運氣。返回的int64_t仍然被截斷爲一個32位值。
在MinGW 32位中確定64位文件大小的正確方法是什麼?
謝謝!
可能不需要太狡猾 - 只需在'fsize()'函數中使用'#if _WIN32 /#else /#endif'。 –
請參閱http://msdn.microsoft.com/en-us/library/14h5k7ff.aspx – Christoph
@MichaelBurr只要'fsize()'是他/她使用'stat'的唯一地方。 (當我輸入狡猾的語言時,我的舌頭緊緊地貼在我的臉頰上!) – idz