c - 如何 : Cross-Operating-System Large File IO in C?

标签 c file io

简而言之:C 中的跨操作系统、大文件支持非常糟糕。

目标:我正在尝试使用“一种方式”(很可能是基于宏的方式)来允许 32 位和 64 位具有大文件支持。理想情况下,使用 typedef、#ifdef、#(n)defined 等,宏包装器可以以#include 库或一组定义的宏的形式允许基本的大文件支持。

研究:POSIX 的文件操作在 BSD/Mac/Linux 上的 32 位和 64 位 IO 上表现良好,文件大于典型的 2^31 大小,但即使在 Windows 上使用 clang 或 mingw由于 M$ 对 POSIX 的愚蠢实现,我无法利用这些调用(如果我们想这样调用它...)。我倾向于在 Windows 上使用 CreateFile()、ReadFile()、WriteFile(),但这在方法和数据类型方面与 POSIX 的 open()/read()/write()/close()/等完全不同用过。

问题:在我的头撞到我的键盘和几本教科书之后,我决定对你们所有人进行投票,看看:你们如何完成跨操作系统文件支持大文件的I/O?

附言我有研究链接:

最佳答案

看来,你需要一个不同版本的mingw:

http://mingw-w64.sourceforge.net/

w64 变体即使在 32b windows 上也支持 linux 兼容的大文件。

关于c - 如何 : Cross-Operating-System Large File IO in C?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23257025/

相关文章:

c++ - "error: ' = ' : left operand must be l-value"? (在三元中使用赋值时?:)

c - 如何在主函数中初始化结构

c - 使用通配符操作输入 .txt

Haskell:将计算结果写入文件

c - 将节点插入双链表时出现段错误

c - 是否有标准的指针大小声明?

actionscript-3 - Adobe AIR : Worker can't load file

file - 如何将结构作为二进制数据写入 golang 中的文件?

c++ - 是否需要为 C/C++ 中的文件 I/O 操作创建自己的缓冲区?

java - try/catch block 中的代码未执行